Install necessary libraries¶

In [1]:
!pip install pandas numpy matplotlib seaborn scikit-learn nltk wordcloud kaggle geopandas plotly folium textblob tensorflow keras 
^C
Requirement already satisfied: pandas in d:\anaconda\lib\site-packages (2.2.2)
Requirement already satisfied: numpy in d:\anaconda\lib\site-packages (1.26.4)
Requirement already satisfied: matplotlib in d:\anaconda\lib\site-packages (3.8.4)
Requirement already satisfied: seaborn in d:\anaconda\lib\site-packages (0.13.2)
Requirement already satisfied: scikit-learn in d:\anaconda\lib\site-packages (1.4.2)
Requirement already satisfied: nltk in d:\anaconda\lib\site-packages (3.8.1)
Collecting wordcloud
  Using cached wordcloud-1.9.3-cp312-cp312-win_amd64.whl.metadata (3.5 kB)
Collecting kaggle
  Using cached kaggle-1.6.17.tar.gz (82 kB)
  Preparing metadata (setup.py): started
  Preparing metadata (setup.py): finished with status 'done'
Collecting geopandas
  Using cached geopandas-1.0.1-py3-none-any.whl.metadata (2.2 kB)
Requirement already satisfied: plotly in d:\anaconda\lib\site-packages (5.22.0)
Collecting folium
  Using cached folium-0.17.0-py2.py3-none-any.whl.metadata (3.8 kB)
Collecting textblob
  Using cached textblob-0.18.0.post0-py3-none-any.whl.metadata (4.5 kB)
Collecting tensorflow
  Using cached tensorflow-2.17.0-cp312-cp312-win_amd64.whl.metadata (3.2 kB)
Collecting keras
  Using cached keras-3.5.0-py3-none-any.whl.metadata (5.8 kB)
Requirement already satisfied: python-dateutil>=2.8.2 in d:\anaconda\lib\site-packages (from pandas) (2.9.0.post0)
Requirement already satisfied: pytz>=2020.1 in d:\anaconda\lib\site-packages (from pandas) (2024.1)
Requirement already satisfied: tzdata>=2022.7 in d:\anaconda\lib\site-packages (from pandas) (2023.3)
Requirement already satisfied: contourpy>=1.0.1 in d:\anaconda\lib\site-packages (from matplotlib) (1.2.0)
Requirement already satisfied: cycler>=0.10 in d:\anaconda\lib\site-packages (from matplotlib) (0.11.0)
Requirement already satisfied: fonttools>=4.22.0 in d:\anaconda\lib\site-packages (from matplotlib) (4.51.0)
Requirement already satisfied: kiwisolver>=1.3.1 in d:\anaconda\lib\site-packages (from matplotlib) (1.4.4)
Requirement already satisfied: packaging>=20.0 in d:\anaconda\lib\site-packages (from matplotlib) (23.2)
Requirement already satisfied: pillow>=8 in d:\anaconda\lib\site-packages (from matplotlib) (10.3.0)
Requirement already satisfied: pyparsing>=2.3.1 in d:\anaconda\lib\site-packages (from matplotlib) (3.0.9)
Requirement already satisfied: scipy>=1.6.0 in d:\anaconda\lib\site-packages (from scikit-learn) (1.13.1)
Requirement already satisfied: joblib>=1.2.0 in d:\anaconda\lib\site-packages (from scikit-learn) (1.4.2)
Requirement already satisfied: threadpoolctl>=2.0.0 in d:\anaconda\lib\site-packages (from scikit-learn) (2.2.0)
Requirement already satisfied: click in d:\anaconda\lib\site-packages (from nltk) (8.1.7)
Requirement already satisfied: regex>=2021.8.3 in d:\anaconda\lib\site-packages (from nltk) (2023.10.3)
Requirement already satisfied: tqdm in d:\anaconda\lib\site-packages (from nltk) (4.66.4)
Requirement already satisfied: six>=1.10 in d:\anaconda\lib\site-packages (from kaggle) (1.16.0)
Requirement already satisfied: certifi>=2023.7.22 in d:\anaconda\lib\site-packages (from kaggle) (2024.6.2)
Requirement already satisfied: requests in d:\anaconda\lib\site-packages (from kaggle) (2.32.2)
Requirement already satisfied: python-slugify in d:\anaconda\lib\site-packages (from kaggle) (5.0.2)
Requirement already satisfied: urllib3 in d:\anaconda\lib\site-packages (from kaggle) (2.2.2)
Requirement already satisfied: bleach in d:\anaconda\lib\site-packages (from kaggle) (4.1.0)
Collecting pyogrio>=0.7.2 (from geopandas)
  Using cached pyogrio-0.9.0-cp312-cp312-win_amd64.whl.metadata (3.9 kB)
Collecting pyproj>=3.3.0 (from geopandas)
  Using cached pyproj-3.6.1-cp312-cp312-win_amd64.whl.metadata (31 kB)
Collecting shapely>=2.0.0 (from geopandas)
  Using cached shapely-2.0.6-cp312-cp312-win_amd64.whl.metadata (7.2 kB)
Requirement already satisfied: tenacity>=6.2.0 in d:\anaconda\lib\site-packages (from plotly) (8.2.2)
Collecting branca>=0.6.0 (from folium)
  Using cached branca-0.7.2-py3-none-any.whl.metadata (1.5 kB)
Requirement already satisfied: jinja2>=2.9 in d:\anaconda\lib\site-packages (from folium) (3.1.4)
Requirement already satisfied: xyzservices in d:\anaconda\lib\site-packages (from folium) (2022.9.0)
Collecting tensorflow-intel==2.17.0 (from tensorflow)
  Using cached tensorflow_intel-2.17.0-cp312-cp312-win_amd64.whl.metadata (5.0 kB)
Collecting absl-py>=1.0.0 (from tensorflow-intel==2.17.0->tensorflow)
  Using cached absl_py-2.1.0-py3-none-any.whl.metadata (2.3 kB)
Collecting astunparse>=1.6.0 (from tensorflow-intel==2.17.0->tensorflow)
  Using cached astunparse-1.6.3-py2.py3-none-any.whl.metadata (4.4 kB)
Collecting flatbuffers>=24.3.25 (from tensorflow-intel==2.17.0->tensorflow)
  Using cached flatbuffers-24.3.25-py2.py3-none-any.whl.metadata (850 bytes)
Collecting gast!=0.5.0,!=0.5.1,!=0.5.2,>=0.2.1 (from tensorflow-intel==2.17.0->tensorflow)
  Using cached gast-0.6.0-py3-none-any.whl.metadata (1.3 kB)
Collecting google-pasta>=0.1.1 (from tensorflow-intel==2.17.0->tensorflow)
  Using cached google_pasta-0.2.0-py3-none-any.whl.metadata (814 bytes)
Requirement already satisfied: h5py>=3.10.0 in d:\anaconda\lib\site-packages (from tensorflow-intel==2.17.0->tensorflow) (3.11.0)
Collecting libclang>=13.0.0 (from tensorflow-intel==2.17.0->tensorflow)
  Using cached libclang-18.1.1-py2.py3-none-win_amd64.whl.metadata (5.3 kB)
Collecting ml-dtypes<0.5.0,>=0.3.1 (from tensorflow-intel==2.17.0->tensorflow)
  Using cached ml_dtypes-0.4.0-cp312-cp312-win_amd64.whl.metadata (20 kB)
Collecting opt-einsum>=2.3.2 (from tensorflow-intel==2.17.0->tensorflow)
  Using cached opt_einsum-3.3.0-py3-none-any.whl.metadata (6.5 kB)
Requirement already satisfied: protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.20.3 in d:\anaconda\lib\site-packages (from tensorflow-intel==2.17.0->tensorflow) (3.20.3)
Requirement already satisfied: setuptools in d:\anaconda\lib\site-packages (from tensorflow-intel==2.17.0->tensorflow) (69.5.1)
Collecting termcolor>=1.1.0 (from tensorflow-intel==2.17.0->tensorflow)
  Using cached termcolor-2.4.0-py3-none-any.whl.metadata (6.1 kB)
Requirement already satisfied: typing-extensions>=3.6.6 in d:\anaconda\lib\site-packages (from tensorflow-intel==2.17.0->tensorflow) (4.11.0)
Requirement already satisfied: wrapt>=1.11.0 in d:\anaconda\lib\site-packages (from tensorflow-intel==2.17.0->tensorflow) (1.14.1)
Collecting grpcio<2.0,>=1.24.3 (from tensorflow-intel==2.17.0->tensorflow)
  Using cached grpcio-1.66.1-cp312-cp312-win_amd64.whl.metadata (4.0 kB)
Collecting tensorboard<2.18,>=2.17 (from tensorflow-intel==2.17.0->tensorflow)
  Using cached tensorboard-2.17.1-py3-none-any.whl.metadata (1.6 kB)
Requirement already satisfied: rich in d:\anaconda\lib\site-packages (from keras) (13.3.5)
Collecting namex (from keras)
  Using cached namex-0.0.8-py3-none-any.whl.metadata (246 bytes)
Collecting optree (from keras)
  Using cached optree-0.12.1-cp312-cp312-win_amd64.whl.metadata (48 kB)
Requirement already satisfied: MarkupSafe>=2.0 in d:\anaconda\lib\site-packages (from jinja2>=2.9->folium) (2.1.3)
Requirement already satisfied: charset-normalizer<4,>=2 in d:\anaconda\lib\site-packages (from requests->kaggle) (2.0.4)
Requirement already satisfied: idna<4,>=2.5 in d:\anaconda\lib\site-packages (from requests->kaggle) (3.7)
Requirement already satisfied: webencodings in d:\anaconda\lib\site-packages (from bleach->kaggle) (0.5.1)
Requirement already satisfied: colorama in d:\anaconda\lib\site-packages (from click->nltk) (0.4.6)
Requirement already satisfied: text-unidecode>=1.3 in d:\anaconda\lib\site-packages (from python-slugify->kaggle) (1.3)
Requirement already satisfied: markdown-it-py<3.0.0,>=2.2.0 in d:\anaconda\lib\site-packages (from rich->keras) (2.2.0)
Requirement already satisfied: pygments<3.0.0,>=2.13.0 in d:\anaconda\lib\site-packages (from rich->keras) (2.15.1)
Requirement already satisfied: wheel<1.0,>=0.23.0 in d:\anaconda\lib\site-packages (from astunparse>=1.6.0->tensorflow-intel==2.17.0->tensorflow) (0.43.0)
Requirement already satisfied: mdurl~=0.1 in d:\anaconda\lib\site-packages (from markdown-it-py<3.0.0,>=2.2.0->rich->keras) (0.1.0)
Requirement already satisfied: markdown>=2.6.8 in d:\anaconda\lib\site-packages (from tensorboard<2.18,>=2.17->tensorflow-intel==2.17.0->tensorflow) (3.4.1)
Collecting tensorboard-data-server<0.8.0,>=0.7.0 (from tensorboard<2.18,>=2.17->tensorflow-intel==2.17.0->tensorflow)
  Using cached tensorboard_data_server-0.7.2-py3-none-any.whl.metadata (1.1 kB)
Requirement already satisfied: werkzeug>=1.0.1 in d:\anaconda\lib\site-packages (from tensorboard<2.18,>=2.17->tensorflow-intel==2.17.0->tensorflow) (3.0.3)
Using cached wordcloud-1.9.3-cp312-cp312-win_amd64.whl (301 kB)
Using cached geopandas-1.0.1-py3-none-any.whl (323 kB)
Using cached folium-0.17.0-py2.py3-none-any.whl (108 kB)
Using cached textblob-0.18.0.post0-py3-none-any.whl (626 kB)
Using cached tensorflow-2.17.0-cp312-cp312-win_amd64.whl (2.0 kB)
Downloading tensorflow_intel-2.17.0-cp312-cp312-win_amd64.whl (385.2 MB)
   ---------------------------------------- 0.0/385.2 MB ? eta -:--:--
   ---------------------------------------- 0.0/385.2 MB ? eta -:--:--
   ---------------------------------------- 0.0/385.2 MB ? eta -:--:--
   ---------------------------------------- 0.0/385.2 MB 186.2 kB/s eta 0:34:29
   ---------------------------------------- 0.1/385.2 MB 297.7 kB/s eta 0:21:34
   ---------------------------------------- 0.1/385.2 MB 467.6 kB/s eta 0:13:44
   ---------------------------------------- 0.2/385.2 MB 765.3 kB/s eta 0:08:23
   ---------------------------------------- 0.3/385.2 MB 999.0 kB/s eta 0:06:26
   ---------------------------------------- 0.5/385.2 MB 1.2 MB/s eta 0:05:28
   ---------------------------------------- 0.6/385.2 MB 1.4 MB/s eta 0:04:44
   ---------------------------------------- 0.7/385.2 MB 1.5 MB/s eta 0:04:23
   ---------------------------------------- 0.8/385.2 MB 1.5 MB/s eta 0:04:09
   ---------------------------------------- 1.0/385.2 MB 1.7 MB/s eta 0:03:41
   ---------------------------------------- 1.1/385.2 MB 1.8 MB/s eta 0:03:36
   ---------------------------------------- 1.2/385.2 MB 1.8 MB/s eta 0:03:29
   ---------------------------------------- 1.4/385.2 MB 1.9 MB/s eta 0:03:22
   ---------------------------------------- 1.5/385.2 MB 2.0 MB/s eta 0:03:16
   ---------------------------------------- 1.6/385.2 MB 2.0 MB/s eta 0:03:11
   ---------------------------------------- 1.7/385.2 MB 2.1 MB/s eta 0:03:07
   ---------------------------------------- 1.9/385.2 MB 2.1 MB/s eta 0:03:04
   ---------------------------------------- 2.0/385.2 MB 2.2 MB/s eta 0:02:59
   ---------------------------------------- 2.2/385.2 MB 2.2 MB/s eta 0:02:57
   ---------------------------------------- 2.3/385.2 MB 2.2 MB/s eta 0:02:54
   ---------------------------------------- 2.4/385.2 MB 2.2 MB/s eta 0:02:53
   ---------------------------------------- 2.5/385.2 MB 2.2 MB/s eta 0:02:52
   ---------------------------------------- 2.6/385.2 MB 2.2 MB/s eta 0:02:54
   ---------------------------------------- 2.7/385.2 MB 2.2 MB/s eta 0:02:56
   ---------------------------------------- 2.8/385.2 MB 2.2 MB/s eta 0:02:52
   ---------------------------------------- 2.9/385.2 MB 2.2 MB/s eta 0:02:54
   ---------------------------------------- 3.0/385.2 MB 2.2 MB/s eta 0:02:53
   ---------------------------------------- 3.1/385.2 MB 2.2 MB/s eta 0:02:55
   ---------------------------------------- 3.2/385.2 MB 2.2 MB/s eta 0:02:54
   ---------------------------------------- 3.3/385.2 MB 2.2 MB/s eta 0:02:56
   ---------------------------------------- 3.5/385.2 MB 2.2 MB/s eta 0:02:53
   ---------------------------------------- 3.6/385.2 MB 2.2 MB/s eta 0:02:52
   ---------------------------------------- 3.7/385.2 MB 2.2 MB/s eta 0:02:50
   ---------------------------------------- 3.9/385.2 MB 2.3 MB/s eta 0:02:49
   ---------------------------------------- 4.0/385.2 MB 2.3 MB/s eta 0:02:48
   ---------------------------------------- 4.1/385.2 MB 2.3 MB/s eta 0:02:47
   ---------------------------------------- 4.2/385.2 MB 2.3 MB/s eta 0:02:46
   ---------------------------------------- 4.4/385.2 MB 2.3 MB/s eta 0:02:46
   ---------------------------------------- 4.5/385.2 MB 2.3 MB/s eta 0:02:45
   ---------------------------------------- 4.6/385.2 MB 2.3 MB/s eta 0:02:45
   ---------------------------------------- 4.7/385.2 MB 2.3 MB/s eta 0:02:45
    --------------------------------------- 4.9/385.2 MB 2.3 MB/s eta 0:02:44
    --------------------------------------- 5.0/385.2 MB 2.3 MB/s eta 0:02:43
    --------------------------------------- 5.1/385.2 MB 2.3 MB/s eta 0:02:43
    --------------------------------------- 5.2/385.2 MB 2.3 MB/s eta 0:02:42
    --------------------------------------- 5.3/385.2 MB 2.3 MB/s eta 0:02:43
    --------------------------------------- 5.5/385.2 MB 2.4 MB/s eta 0:02:41
    --------------------------------------- 5.6/385.2 MB 2.4 MB/s eta 0:02:41
    --------------------------------------- 5.7/385.2 MB 2.4 MB/s eta 0:02:40
    --------------------------------------- 5.9/385.2 MB 2.4 MB/s eta 0:02:40
    --------------------------------------- 6.0/385.2 MB 2.4 MB/s eta 0:02:40
    --------------------------------------- 6.1/385.2 MB 2.4 MB/s eta 0:02:39
    --------------------------------------- 6.3/385.2 MB 2.4 MB/s eta 0:02:39
    --------------------------------------- 6.4/385.2 MB 2.4 MB/s eta 0:02:38
    --------------------------------------- 6.6/385.2 MB 2.4 MB/s eta 0:02:38
    --------------------------------------- 6.8/385.2 MB 2.4 MB/s eta 0:02:36
    --------------------------------------- 6.9/385.2 MB 2.4 MB/s eta 0:02:36
    --------------------------------------- 7.0/385.2 MB 2.4 MB/s eta 0:02:36
    --------------------------------------- 7.1/385.2 MB 2.4 MB/s eta 0:02:36
    --------------------------------------- 7.2/385.2 MB 2.4 MB/s eta 0:02:36
    --------------------------------------- 7.4/385.2 MB 2.4 MB/s eta 0:02:35
    --------------------------------------- 7.5/385.2 MB 2.4 MB/s eta 0:02:35
    --------------------------------------- 7.6/385.2 MB 2.4 MB/s eta 0:02:35
    --------------------------------------- 7.7/385.2 MB 2.4 MB/s eta 0:02:35
    --------------------------------------- 7.9/385.2 MB 2.4 MB/s eta 0:02:35
    --------------------------------------- 8.0/385.2 MB 2.4 MB/s eta 0:02:35
    --------------------------------------- 8.1/385.2 MB 2.5 MB/s eta 0:02:34
    --------------------------------------- 8.3/385.2 MB 2.5 MB/s eta 0:02:33
    --------------------------------------- 8.4/385.2 MB 2.5 MB/s eta 0:02:34
    --------------------------------------- 8.5/385.2 MB 2.5 MB/s eta 0:02:33
    --------------------------------------- 8.7/385.2 MB 2.5 MB/s eta 0:02:33
    --------------------------------------- 8.8/385.2 MB 2.5 MB/s eta 0:02:32
    --------------------------------------- 8.9/385.2 MB 2.5 MB/s eta 0:02:32
    --------------------------------------- 9.0/385.2 MB 2.5 MB/s eta 0:02:32
    --------------------------------------- 9.1/385.2 MB 2.5 MB/s eta 0:02:32
    --------------------------------------- 9.3/385.2 MB 2.5 MB/s eta 0:02:32
    --------------------------------------- 9.4/385.2 MB 2.5 MB/s eta 0:02:32
    --------------------------------------- 9.5/385.2 MB 2.5 MB/s eta 0:02:32
    --------------------------------------- 9.6/385.2 MB 2.5 MB/s eta 0:02:32
   - -------------------------------------- 9.8/385.2 MB 2.5 MB/s eta 0:02:31
   - -------------------------------------- 9.9/385.2 MB 2.5 MB/s eta 0:02:31
   - -------------------------------------- 10.1/385.2 MB 2.5 MB/s eta 0:02:30
   - -------------------------------------- 10.2/385.2 MB 2.5 MB/s eta 0:02:31
   - -------------------------------------- 10.3/385.2 MB 2.6 MB/s eta 0:02:24
   - -------------------------------------- 10.4/385.2 MB 2.6 MB/s eta 0:02:23
   - -------------------------------------- 10.5/385.2 MB 2.6 MB/s eta 0:02:24
   - -------------------------------------- 10.6/385.2 MB 2.6 MB/s eta 0:02:24
   - -------------------------------------- 10.7/385.2 MB 2.6 MB/s eta 0:02:23
   - -------------------------------------- 10.8/385.2 MB 2.6 MB/s eta 0:02:24
   - -------------------------------------- 11.0/385.2 MB 2.6 MB/s eta 0:02:24
   - -------------------------------------- 11.1/385.2 MB 2.6 MB/s eta 0:02:24
   - -------------------------------------- 11.2/385.2 MB 2.6 MB/s eta 0:02:25
   - -------------------------------------- 11.3/385.2 MB 2.6 MB/s eta 0:02:24
   - -------------------------------------- 11.4/385.2 MB 2.6 MB/s eta 0:02:24
   - -------------------------------------- 11.6/385.2 MB 2.6 MB/s eta 0:02:24
   - -------------------------------------- 11.7/385.2 MB 2.6 MB/s eta 0:02:25
   - -------------------------------------- 11.8/385.2 MB 2.6 MB/s eta 0:02:24
   - -------------------------------------- 12.0/385.2 MB 2.6 MB/s eta 0:02:24
   - -------------------------------------- 12.0/385.2 MB 2.6 MB/s eta 0:02:25
   - -------------------------------------- 12.1/385.2 MB 2.6 MB/s eta 0:02:25
   - -------------------------------------- 12.2/385.2 MB 2.6 MB/s eta 0:02:26
   - -------------------------------------- 12.4/385.2 MB 2.6 MB/s eta 0:02:26
   - -------------------------------------- 12.5/385.2 MB 2.6 MB/s eta 0:02:26
   - -------------------------------------- 12.6/385.2 MB 2.6 MB/s eta 0:02:26
   - -------------------------------------- 12.7/385.2 MB 2.6 MB/s eta 0:02:26
   - -------------------------------------- 12.9/385.2 MB 2.6 MB/s eta 0:02:24
   - -------------------------------------- 13.0/385.2 MB 2.6 MB/s eta 0:02:25
   - -------------------------------------- 13.1/385.2 MB 2.6 MB/s eta 0:02:24
   - -------------------------------------- 13.3/385.2 MB 2.6 MB/s eta 0:02:22
   - -------------------------------------- 13.4/385.2 MB 2.6 MB/s eta 0:02:22
   - -------------------------------------- 13.6/385.2 MB 2.6 MB/s eta 0:02:22
   - -------------------------------------- 13.7/385.2 MB 2.6 MB/s eta 0:02:21
   - -------------------------------------- 13.9/385.2 MB 2.6 MB/s eta 0:02:21
   - -------------------------------------- 14.0/385.2 MB 2.6 MB/s eta 0:02:21
   - -------------------------------------- 14.1/385.2 MB 2.6 MB/s eta 0:02:22
   - -------------------------------------- 14.2/385.2 MB 2.6 MB/s eta 0:02:22
   - -------------------------------------- 14.4/385.2 MB 2.6 MB/s eta 0:02:21
   - -------------------------------------- 14.5/385.2 MB 2.6 MB/s eta 0:02:21
   - -------------------------------------- 14.7/385.2 MB 2.6 MB/s eta 0:02:21
   - -------------------------------------- 14.8/385.2 MB 2.7 MB/s eta 0:02:20
   - -------------------------------------- 14.9/385.2 MB 2.7 MB/s eta 0:02:20
   - -------------------------------------- 15.1/385.2 MB 2.7 MB/s eta 0:02:20
   - -------------------------------------- 15.2/385.2 MB 2.7 MB/s eta 0:02:20
   - -------------------------------------- 15.4/385.2 MB 2.7 MB/s eta 0:02:19
   - -------------------------------------- 15.5/385.2 MB 2.7 MB/s eta 0:02:19
   - -------------------------------------- 15.6/385.2 MB 2.7 MB/s eta 0:02:19
   - -------------------------------------- 15.7/385.2 MB 2.7 MB/s eta 0:02:19
   - -------------------------------------- 15.9/385.2 MB 2.7 MB/s eta 0:02:19
   - -------------------------------------- 16.0/385.2 MB 2.7 MB/s eta 0:02:19
   - -------------------------------------- 16.1/385.2 MB 2.7 MB/s eta 0:02:19
   - -------------------------------------- 16.3/385.2 MB 2.7 MB/s eta 0:02:20
   - -------------------------------------- 16.4/385.2 MB 2.7 MB/s eta 0:02:19
   - -------------------------------------- 16.5/385.2 MB 2.7 MB/s eta 0:02:19
   - -------------------------------------- 16.7/385.2 MB 2.7 MB/s eta 0:02:19
   - -------------------------------------- 16.8/385.2 MB 2.7 MB/s eta 0:02:19
   - -------------------------------------- 16.9/385.2 MB 2.7 MB/s eta 0:02:19
   - -------------------------------------- 17.1/385.2 MB 2.7 MB/s eta 0:02:19
   - -------------------------------------- 17.2/385.2 MB 2.7 MB/s eta 0:02:18
   - -------------------------------------- 17.3/385.2 MB 2.7 MB/s eta 0:02:18
   - -------------------------------------- 17.5/385.2 MB 2.7 MB/s eta 0:02:19
   - -------------------------------------- 17.6/385.2 MB 2.7 MB/s eta 0:02:18
   - -------------------------------------- 17.7/385.2 MB 2.7 MB/s eta 0:02:18
   - -------------------------------------- 17.8/385.2 MB 2.7 MB/s eta 0:02:18
   - -------------------------------------- 18.0/385.2 MB 2.7 MB/s eta 0:02:18
   - -------------------------------------- 18.1/385.2 MB 2.7 MB/s eta 0:02:18
   - -------------------------------------- 18.3/385.2 MB 2.7 MB/s eta 0:02:17
   - -------------------------------------- 18.4/385.2 MB 2.7 MB/s eta 0:02:18
   - -------------------------------------- 18.5/385.2 MB 2.7 MB/s eta 0:02:17
   - -------------------------------------- 18.6/385.2 MB 2.7 MB/s eta 0:02:18
   - -------------------------------------- 18.8/385.2 MB 2.7 MB/s eta 0:02:18
   - -------------------------------------- 18.9/385.2 MB 2.7 MB/s eta 0:02:18
   - -------------------------------------- 19.0/385.2 MB 2.7 MB/s eta 0:02:18
   - -------------------------------------- 19.1/385.2 MB 2.7 MB/s eta 0:02:18
   - -------------------------------------- 19.2/385.2 MB 2.7 MB/s eta 0:02:19
   -- ------------------------------------- 19.4/385.2 MB 2.7 MB/s eta 0:02:17
   -- ------------------------------------- 19.5/385.2 MB 2.7 MB/s eta 0:02:18
   -- ------------------------------------- 19.6/385.2 MB 2.7 MB/s eta 0:02:18
   -- ------------------------------------- 19.7/385.2 MB 2.7 MB/s eta 0:02:18
   -- ------------------------------------- 19.8/385.2 MB 2.7 MB/s eta 0:02:18
   -- ------------------------------------- 19.9/385.2 MB 2.7 MB/s eta 0:02:18
   -- ------------------------------------- 20.0/385.2 MB 2.7 MB/s eta 0:02:18
   -- ------------------------------------- 20.2/385.2 MB 2.7 MB/s eta 0:02:18
   -- ------------------------------------- 20.3/385.2 MB 2.6 MB/s eta 0:02:19
   -- ------------------------------------- 20.4/385.2 MB 2.6 MB/s eta 0:02:19
   -- ------------------------------------- 20.6/385.2 MB 2.6 MB/s eta 0:02:19
   -- ------------------------------------- 20.7/385.2 MB 2.7 MB/s eta 0:02:18
   -- ------------------------------------- 20.8/385.2 MB 2.7 MB/s eta 0:02:17
   -- ------------------------------------- 20.9/385.2 MB 2.7 MB/s eta 0:02:17
   -- ------------------------------------- 21.1/385.2 MB 2.7 MB/s eta 0:02:17
   -- ------------------------------------- 21.2/385.2 MB 2.7 MB/s eta 0:02:18
   -- ------------------------------------- 21.3/385.2 MB 2.7 MB/s eta 0:02:17
   -- ------------------------------------- 21.4/385.2 MB 2.7 MB/s eta 0:02:17
   -- ------------------------------------- 21.5/385.2 MB 2.7 MB/s eta 0:02:18
   -- ------------------------------------- 21.5/385.2 MB 2.7 MB/s eta 0:02:18
   -- ------------------------------------- 21.6/385.2 MB 2.6 MB/s eta 0:02:20
   -- ------------------------------------- 21.8/385.2 MB 2.6 MB/s eta 0:02:20
   -- ------------------------------------- 21.9/385.2 MB 2.6 MB/s eta 0:02:20
   -- ------------------------------------- 21.9/385.2 MB 2.6 MB/s eta 0:02:21
   -- ------------------------------------- 22.0/385.2 MB 2.6 MB/s eta 0:02:21
   -- ------------------------------------- 22.0/385.2 MB 2.5 MB/s eta 0:02:23
   -- ------------------------------------- 22.0/385.2 MB 2.5 MB/s eta 0:02:24
   -- ------------------------------------- 22.1/385.2 MB 2.5 MB/s eta 0:02:25
   -- ------------------------------------- 22.2/385.2 MB 2.5 MB/s eta 0:02:25
   -- ------------------------------------- 22.3/385.2 MB 2.5 MB/s eta 0:02:25
   -- ------------------------------------- 22.5/385.2 MB 2.5 MB/s eta 0:02:25
   -- ------------------------------------- 22.5/385.2 MB 2.5 MB/s eta 0:02:25
   -- ------------------------------------- 22.5/385.2 MB 2.5 MB/s eta 0:02:26
   -- ------------------------------------- 22.7/385.2 MB 2.5 MB/s eta 0:02:27
   -- ------------------------------------- 22.8/385.2 MB 2.5 MB/s eta 0:02:27
   -- ------------------------------------- 22.9/385.2 MB 2.5 MB/s eta 0:02:27
   -- ------------------------------------- 23.0/385.2 MB 2.5 MB/s eta 0:02:28
   -- ------------------------------------- 23.1/385.2 MB 2.5 MB/s eta 0:02:28
   -- ------------------------------------- 23.2/385.2 MB 2.5 MB/s eta 0:02:28
   -- ------------------------------------- 23.3/385.2 MB 2.5 MB/s eta 0:02:28
   -- ------------------------------------- 23.5/385.2 MB 2.4 MB/s eta 0:02:29
   -- ------------------------------------- 23.6/385.2 MB 2.4 MB/s eta 0:02:28
   -- ------------------------------------- 23.8/385.2 MB 2.4 MB/s eta 0:02:28
   -- ------------------------------------- 23.9/385.2 MB 2.5 MB/s eta 0:02:28
   -- ------------------------------------- 24.0/385.2 MB 2.4 MB/s eta 0:02:28
   -- ------------------------------------- 24.2/385.2 MB 2.4 MB/s eta 0:02:29
   -- ------------------------------------- 24.3/385.2 MB 2.4 MB/s eta 0:02:28
   -- ------------------------------------- 24.4/385.2 MB 2.4 MB/s eta 0:02:29
   -- ------------------------------------- 24.6/385.2 MB 2.5 MB/s eta 0:02:28
   -- ------------------------------------- 24.7/385.2 MB 2.4 MB/s eta 0:02:28
   -- ------------------------------------- 24.8/385.2 MB 2.4 MB/s eta 0:02:28
   -- ------------------------------------- 24.9/385.2 MB 2.4 MB/s eta 0:02:28
   -- ------------------------------------- 25.1/385.2 MB 2.4 MB/s eta 0:02:28
   -- ------------------------------------- 25.2/385.2 MB 2.4 MB/s eta 0:02:28
   -- ------------------------------------- 25.3/385.2 MB 2.4 MB/s eta 0:02:28
   -- ------------------------------------- 25.4/385.2 MB 2.4 MB/s eta 0:02:29
   -- ------------------------------------- 25.6/385.2 MB 2.4 MB/s eta 0:02:29
   -- ------------------------------------- 25.7/385.2 MB 2.4 MB/s eta 0:02:29
   -- ------------------------------------- 25.8/385.2 MB 2.4 MB/s eta 0:02:28
   -- ------------------------------------- 26.0/385.2 MB 2.4 MB/s eta 0:02:28
   -- ------------------------------------- 26.1/385.2 MB 2.4 MB/s eta 0:02:28
   -- ------------------------------------- 26.2/385.2 MB 2.4 MB/s eta 0:02:28
   -- ------------------------------------- 26.4/385.2 MB 2.4 MB/s eta 0:02:28
   -- ------------------------------------- 26.5/385.2 MB 2.4 MB/s eta 0:02:27
   -- ------------------------------------- 26.6/385.2 MB 2.4 MB/s eta 0:02:28
   -- ------------------------------------- 26.8/385.2 MB 2.4 MB/s eta 0:02:28
   -- ------------------------------------- 26.9/385.2 MB 2.4 MB/s eta 0:02:28
   -- ------------------------------------- 27.0/385.2 MB 2.4 MB/s eta 0:02:28
   -- ------------------------------------- 27.2/385.2 MB 2.4 MB/s eta 0:02:28
   -- ------------------------------------- 27.3/385.2 MB 2.4 MB/s eta 0:02:28
   -- ------------------------------------- 27.4/385.2 MB 2.4 MB/s eta 0:02:27
   -- ------------------------------------- 27.6/385.2 MB 2.4 MB/s eta 0:02:27
   -- ------------------------------------- 27.7/385.2 MB 2.4 MB/s eta 0:02:27
   -- ------------------------------------- 27.8/385.2 MB 2.4 MB/s eta 0:02:27
   -- ------------------------------------- 28.0/385.2 MB 2.4 MB/s eta 0:02:27
   -- ------------------------------------- 28.1/385.2 MB 2.4 MB/s eta 0:02:27
   -- ------------------------------------- 28.2/385.2 MB 2.4 MB/s eta 0:02:27
   -- ------------------------------------- 28.3/385.2 MB 2.4 MB/s eta 0:02:27
   -- ------------------------------------- 28.4/385.2 MB 2.4 MB/s eta 0:02:28
   -- ------------------------------------- 28.5/385.2 MB 2.4 MB/s eta 0:02:29
   -- ------------------------------------- 28.6/385.2 MB 2.4 MB/s eta 0:02:29
   -- ------------------------------------- 28.7/385.2 MB 2.4 MB/s eta 0:02:29
   -- ------------------------------------- 28.8/385.2 MB 2.4 MB/s eta 0:02:29
   --- ------------------------------------ 28.9/385.2 MB 2.4 MB/s eta 0:02:30
   --- ------------------------------------ 28.9/385.2 MB 2.4 MB/s eta 0:02:30
   --- ------------------------------------ 29.1/385.2 MB 2.4 MB/s eta 0:02:31
   --- ------------------------------------ 29.2/385.2 MB 2.4 MB/s eta 0:02:30
   --- ------------------------------------ 29.3/385.2 MB 2.4 MB/s eta 0:02:30
   --- ------------------------------------ 29.5/385.2 MB 2.4 MB/s eta 0:02:30
   --- ------------------------------------ 29.6/385.2 MB 2.4 MB/s eta 0:02:30
   --- ------------------------------------ 29.7/385.2 MB 2.4 MB/s eta 0:02:30
   --- ------------------------------------ 29.8/385.2 MB 2.4 MB/s eta 0:02:29
   --- ------------------------------------ 29.9/385.2 MB 2.4 MB/s eta 0:02:29
   --- ------------------------------------ 30.1/385.2 MB 2.4 MB/s eta 0:02:29
   --- ------------------------------------ 30.2/385.2 MB 2.4 MB/s eta 0:02:29
   --- ------------------------------------ 30.3/385.2 MB 2.4 MB/s eta 0:02:28
   --- ------------------------------------ 30.5/385.2 MB 2.4 MB/s eta 0:02:28
   --- ------------------------------------ 30.6/385.2 MB 2.4 MB/s eta 0:02:28
   --- ------------------------------------ 30.7/385.2 MB 2.4 MB/s eta 0:02:28
   --- ------------------------------------ 31.0/385.2 MB 2.4 MB/s eta 0:02:28
   --- ------------------------------------ 31.2/385.2 MB 2.4 MB/s eta 0:02:28
   --- ------------------------------------ 31.3/385.2 MB 2.4 MB/s eta 0:02:29
   --- ------------------------------------ 31.4/385.2 MB 2.4 MB/s eta 0:02:28
   --- ------------------------------------ 31.5/385.2 MB 2.4 MB/s eta 0:02:28
   --- ------------------------------------ 31.6/385.2 MB 2.4 MB/s eta 0:02:27
   --- ------------------------------------ 31.7/385.2 MB 2.4 MB/s eta 0:02:25
   --- ------------------------------------ 31.9/385.2 MB 2.4 MB/s eta 0:02:25
   --- ------------------------------------ 32.0/385.2 MB 2.4 MB/s eta 0:02:26
   --- ------------------------------------ 32.1/385.2 MB 2.4 MB/s eta 0:02:26
   --- ------------------------------------ 32.2/385.2 MB 2.4 MB/s eta 0:02:25
   --- ------------------------------------ 32.3/385.2 MB 2.5 MB/s eta 0:02:22
   --- ------------------------------------ 32.4/385.2 MB 2.5 MB/s eta 0:02:21
   --- ------------------------------------ 32.5/385.2 MB 2.5 MB/s eta 0:02:20
   --- ------------------------------------ 32.7/385.2 MB 2.5 MB/s eta 0:02:20
   --- ------------------------------------ 32.8/385.2 MB 2.6 MB/s eta 0:02:18
   --- ------------------------------------ 32.9/385.2 MB 2.6 MB/s eta 0:02:18
   --- ------------------------------------ 33.1/385.2 MB 2.5 MB/s eta 0:02:19
   --- ------------------------------------ 33.2/385.2 MB 2.6 MB/s eta 0:02:18
   --- ------------------------------------ 33.3/385.2 MB 2.6 MB/s eta 0:02:17
   --- ------------------------------------ 33.4/385.2 MB 2.6 MB/s eta 0:02:17
   --- ------------------------------------ 33.6/385.2 MB 2.6 MB/s eta 0:02:16
   --- ------------------------------------ 33.7/385.2 MB 2.6 MB/s eta 0:02:17
   --- ------------------------------------ 33.8/385.2 MB 2.6 MB/s eta 0:02:16
   --- ------------------------------------ 34.0/385.2 MB 2.6 MB/s eta 0:02:17
   --- ------------------------------------ 34.0/385.2 MB 2.6 MB/s eta 0:02:17
   --- ------------------------------------ 34.1/385.2 MB 2.5 MB/s eta 0:02:18
   --- ------------------------------------ 34.3/385.2 MB 2.5 MB/s eta 0:02:18
   --- ------------------------------------ 34.5/385.2 MB 2.5 MB/s eta 0:02:18
   --- ------------------------------------ 34.7/385.2 MB 2.5 MB/s eta 0:02:18
   --- ------------------------------------ 34.9/385.2 MB 2.5 MB/s eta 0:02:18
   --- ------------------------------------ 35.0/385.2 MB 2.5 MB/s eta 0:02:18
   --- ------------------------------------ 35.1/385.2 MB 2.5 MB/s eta 0:02:18
   --- ------------------------------------ 35.3/385.2 MB 2.6 MB/s eta 0:02:17
   --- ------------------------------------ 35.5/385.2 MB 2.6 MB/s eta 0:02:17
   --- ------------------------------------ 35.7/385.2 MB 2.6 MB/s eta 0:02:17
   --- ------------------------------------ 35.9/385.2 MB 2.6 MB/s eta 0:02:17
   --- ------------------------------------ 36.0/385.2 MB 2.6 MB/s eta 0:02:17
   --- ------------------------------------ 36.1/385.2 MB 2.6 MB/s eta 0:02:17
   --- ------------------------------------ 36.2/385.2 MB 2.5 MB/s eta 0:02:17
   --- ------------------------------------ 36.3/385.2 MB 2.5 MB/s eta 0:02:18
   --- ------------------------------------ 36.5/385.2 MB 2.5 MB/s eta 0:02:17
   --- ------------------------------------ 36.6/385.2 MB 2.5 MB/s eta 0:02:17
   --- ------------------------------------ 36.8/385.2 MB 2.5 MB/s eta 0:02:17
   --- ------------------------------------ 36.9/385.2 MB 2.5 MB/s eta 0:02:17
   --- ------------------------------------ 37.0/385.2 MB 2.5 MB/s eta 0:02:17
   --- ------------------------------------ 37.2/385.2 MB 2.5 MB/s eta 0:02:17
   --- ------------------------------------ 37.3/385.2 MB 2.5 MB/s eta 0:02:17
   --- ------------------------------------ 37.4/385.2 MB 2.5 MB/s eta 0:02:18
   --- ------------------------------------ 37.6/385.2 MB 2.5 MB/s eta 0:02:17
   --- ------------------------------------ 37.7/385.2 MB 2.5 MB/s eta 0:02:17
   --- ------------------------------------ 37.8/385.2 MB 2.5 MB/s eta 0:02:17
   --- ------------------------------------ 38.0/385.2 MB 2.5 MB/s eta 0:02:17
   --- ------------------------------------ 38.1/385.2 MB 2.5 MB/s eta 0:02:17
   --- ------------------------------------ 38.2/385.2 MB 2.5 MB/s eta 0:02:17
   --- ------------------------------------ 38.3/385.2 MB 2.6 MB/s eta 0:02:16
   --- ------------------------------------ 38.5/385.2 MB 2.5 MB/s eta 0:02:17
   ---- ----------------------------------- 38.6/385.2 MB 2.6 MB/s eta 0:02:15
   ---- ----------------------------------- 38.7/385.2 MB 2.6 MB/s eta 0:02:15
   ---- ----------------------------------- 38.9/385.2 MB 2.6 MB/s eta 0:02:15
   ---- ----------------------------------- 39.0/385.2 MB 2.6 MB/s eta 0:02:15
   ---- ----------------------------------- 39.1/385.2 MB 2.6 MB/s eta 0:02:14
   ---- ----------------------------------- 39.2/385.2 MB 2.6 MB/s eta 0:02:13
   ---- ----------------------------------- 39.4/385.2 MB 2.6 MB/s eta 0:02:13
   ---- ----------------------------------- 39.5/385.2 MB 2.6 MB/s eta 0:02:13
   ---- ----------------------------------- 39.6/385.2 MB 2.6 MB/s eta 0:02:12
   ---- ----------------------------------- 39.8/385.2 MB 2.6 MB/s eta 0:02:12
   ---- ----------------------------------- 39.9/385.2 MB 2.6 MB/s eta 0:02:12
   ---- ----------------------------------- 40.0/385.2 MB 2.6 MB/s eta 0:02:12
   ---- ----------------------------------- 40.2/385.2 MB 2.6 MB/s eta 0:02:12
   ---- ----------------------------------- 40.3/385.2 MB 2.6 MB/s eta 0:02:12
   ---- ----------------------------------- 40.5/385.2 MB 2.6 MB/s eta 0:02:12
   ---- ----------------------------------- 40.6/385.2 MB 2.6 MB/s eta 0:02:12
   ---- ----------------------------------- 40.7/385.2 MB 2.6 MB/s eta 0:02:12
   ---- ----------------------------------- 40.9/385.2 MB 2.6 MB/s eta 0:02:11
   ---- ----------------------------------- 41.0/385.2 MB 2.7 MB/s eta 0:02:10
   ---- ----------------------------------- 41.2/385.2 MB 2.6 MB/s eta 0:02:11
   ---- ----------------------------------- 41.3/385.2 MB 2.6 MB/s eta 0:02:11
   ---- ----------------------------------- 41.4/385.2 MB 2.7 MB/s eta 0:02:10
   ---- ----------------------------------- 41.6/385.2 MB 2.6 MB/s eta 0:02:11
   ---- ----------------------------------- 41.7/385.2 MB 2.6 MB/s eta 0:02:11
   ---- ----------------------------------- 41.8/385.2 MB 2.7 MB/s eta 0:02:10
   ---- ----------------------------------- 42.0/385.2 MB 2.7 MB/s eta 0:02:09
   ---- ----------------------------------- 42.1/385.2 MB 2.7 MB/s eta 0:02:09
   ---- ----------------------------------- 42.2/385.2 MB 2.7 MB/s eta 0:02:09
   ---- ----------------------------------- 42.4/385.2 MB 2.7 MB/s eta 0:02:09
   ---- ----------------------------------- 42.5/385.2 MB 2.7 MB/s eta 0:02:08
   ---- ----------------------------------- 42.6/385.2 MB 2.7 MB/s eta 0:02:08
   ---- ----------------------------------- 42.7/385.2 MB 2.7 MB/s eta 0:02:08
   ---- ----------------------------------- 42.9/385.2 MB 2.7 MB/s eta 0:02:08
   ---- ----------------------------------- 43.0/385.2 MB 2.7 MB/s eta 0:02:08
   ---- ----------------------------------- 43.1/385.2 MB 2.7 MB/s eta 0:02:08
   ---- ----------------------------------- 43.2/385.2 MB 2.7 MB/s eta 0:02:07
   ---- ----------------------------------- 43.4/385.2 MB 2.7 MB/s eta 0:02:08
   ---- ----------------------------------- 43.5/385.2 MB 2.7 MB/s eta 0:02:08
   ---- ----------------------------------- 43.7/385.2 MB 2.7 MB/s eta 0:02:08
   ---- ----------------------------------- 43.8/385.2 MB 2.7 MB/s eta 0:02:08
   ---- ----------------------------------- 44.0/385.2 MB 2.7 MB/s eta 0:02:08
   ---- ----------------------------------- 44.1/385.2 MB 2.7 MB/s eta 0:02:07
   ---- ----------------------------------- 44.3/385.2 MB 2.7 MB/s eta 0:02:07
   ---- ----------------------------------- 44.4/385.2 MB 2.7 MB/s eta 0:02:06
   ---- ----------------------------------- 44.6/385.2 MB 2.7 MB/s eta 0:02:05
   ---- ----------------------------------- 44.7/385.2 MB 2.7 MB/s eta 0:02:06
   ---- ----------------------------------- 44.8/385.2 MB 2.7 MB/s eta 0:02:06
   ---- ----------------------------------- 44.9/385.2 MB 2.7 MB/s eta 0:02:06
   ---- ----------------------------------- 45.0/385.2 MB 2.7 MB/s eta 0:02:07
   ---- ----------------------------------- 45.1/385.2 MB 2.7 MB/s eta 0:02:06
   ---- ----------------------------------- 45.3/385.2 MB 2.7 MB/s eta 0:02:06
   ---- ----------------------------------- 45.4/385.2 MB 2.7 MB/s eta 0:02:07
   ---- ----------------------------------- 45.5/385.2 MB 2.7 MB/s eta 0:02:06
   ---- ----------------------------------- 45.7/385.2 MB 2.7 MB/s eta 0:02:06
   ---- ----------------------------------- 45.8/385.2 MB 2.7 MB/s eta 0:02:06
   ---- ----------------------------------- 45.9/385.2 MB 2.7 MB/s eta 0:02:05
   ---- ----------------------------------- 46.1/385.2 MB 2.7 MB/s eta 0:02:06
   ---- ----------------------------------- 46.2/385.2 MB 2.7 MB/s eta 0:02:06
   ---- ----------------------------------- 46.3/385.2 MB 2.7 MB/s eta 0:02:05
   ---- ----------------------------------- 46.5/385.2 MB 2.7 MB/s eta 0:02:05
   ---- ----------------------------------- 46.6/385.2 MB 2.7 MB/s eta 0:02:05
   ---- ----------------------------------- 46.7/385.2 MB 2.7 MB/s eta 0:02:05
   ---- ----------------------------------- 46.9/385.2 MB 2.7 MB/s eta 0:02:05
   ---- ----------------------------------- 47.0/385.2 MB 2.7 MB/s eta 0:02:04
   ---- ----------------------------------- 47.1/385.2 MB 2.7 MB/s eta 0:02:04
   ---- ----------------------------------- 47.3/385.2 MB 2.7 MB/s eta 0:02:04
   ---- ----------------------------------- 47.4/385.2 MB 2.7 MB/s eta 0:02:05
   ---- ----------------------------------- 47.6/385.2 MB 2.7 MB/s eta 0:02:04
   ---- ----------------------------------- 47.7/385.2 MB 2.7 MB/s eta 0:02:05
   ---- ----------------------------------- 47.9/385.2 MB 2.7 MB/s eta 0:02:04
   ---- ----------------------------------- 48.0/385.2 MB 2.7 MB/s eta 0:02:05
   ---- ----------------------------------- 48.1/385.2 MB 2.7 MB/s eta 0:02:05
   ----- ---------------------------------- 48.3/385.2 MB 2.7 MB/s eta 0:02:05
   ----- ---------------------------------- 48.4/385.2 MB 2.7 MB/s eta 0:02:04
   ----- ---------------------------------- 48.5/385.2 MB 2.7 MB/s eta 0:02:05
   ----- ---------------------------------- 48.6/385.2 MB 2.7 MB/s eta 0:02:05
   ----- ---------------------------------- 48.8/385.2 MB 2.7 MB/s eta 0:02:05
   ----- ---------------------------------- 48.9/385.2 MB 2.7 MB/s eta 0:02:05
   ----- ---------------------------------- 49.0/385.2 MB 2.7 MB/s eta 0:02:04
   ----- ---------------------------------- 49.1/385.2 MB 2.7 MB/s eta 0:02:05
   ----- ---------------------------------- 49.3/385.2 MB 2.7 MB/s eta 0:02:05
   ----- ---------------------------------- 49.4/385.2 MB 2.7 MB/s eta 0:02:05
   ----- ---------------------------------- 49.6/385.2 MB 2.7 MB/s eta 0:02:05
   ----- ---------------------------------- 49.7/385.2 MB 2.7 MB/s eta 0:02:04
   ----- ---------------------------------- 49.8/385.2 MB 2.7 MB/s eta 0:02:04
   ----- ---------------------------------- 50.0/385.2 MB 2.7 MB/s eta 0:02:04
   ----- ---------------------------------- 50.1/385.2 MB 2.7 MB/s eta 0:02:04
   ----- ---------------------------------- 50.3/385.2 MB 2.7 MB/s eta 0:02:04
   ----- ---------------------------------- 50.4/385.2 MB 2.7 MB/s eta 0:02:05
   ----- ---------------------------------- 50.5/385.2 MB 2.7 MB/s eta 0:02:04
   ----- ---------------------------------- 50.7/385.2 MB 2.7 MB/s eta 0:02:04
   ----- ---------------------------------- 50.8/385.2 MB 2.7 MB/s eta 0:02:04
   ----- ---------------------------------- 50.9/385.2 MB 2.7 MB/s eta 0:02:04
   ----- ---------------------------------- 51.1/385.2 MB 2.7 MB/s eta 0:02:04
   ----- ---------------------------------- 51.2/385.2 MB 2.7 MB/s eta 0:02:04
   ----- ---------------------------------- 51.3/385.2 MB 2.7 MB/s eta 0:02:04
   ----- ---------------------------------- 51.5/385.2 MB 2.7 MB/s eta 0:02:04
   ----- ---------------------------------- 51.6/385.2 MB 2.7 MB/s eta 0:02:04
   ----- ---------------------------------- 51.8/385.2 MB 2.7 MB/s eta 0:02:04
   ----- ---------------------------------- 51.9/385.2 MB 2.7 MB/s eta 0:02:04
   ----- ---------------------------------- 52.0/385.2 MB 2.7 MB/s eta 0:02:04
   ----- ---------------------------------- 52.1/385.2 MB 2.7 MB/s eta 0:02:05
   ----- ---------------------------------- 52.2/385.2 MB 2.7 MB/s eta 0:02:04
   ----- ---------------------------------- 52.4/385.2 MB 2.7 MB/s eta 0:02:04
   ----- ---------------------------------- 52.5/385.2 MB 2.7 MB/s eta 0:02:04
   ----- ---------------------------------- 52.6/385.2 MB 2.7 MB/s eta 0:02:04
   ----- ---------------------------------- 52.7/385.2 MB 2.7 MB/s eta 0:02:04
   ----- ---------------------------------- 52.8/385.2 MB 2.7 MB/s eta 0:02:04
   ----- ---------------------------------- 53.0/385.2 MB 2.7 MB/s eta 0:02:04
   ----- ---------------------------------- 53.0/385.2 MB 2.7 MB/s eta 0:02:05
   ----- ---------------------------------- 53.1/385.2 MB 2.7 MB/s eta 0:02:05
   ----- ---------------------------------- 53.2/385.2 MB 2.6 MB/s eta 0:02:06
   ----- ---------------------------------- 53.4/385.2 MB 2.7 MB/s eta 0:02:05
   ----- ---------------------------------- 53.5/385.2 MB 2.7 MB/s eta 0:02:06
   ----- ---------------------------------- 53.5/385.2 MB 2.6 MB/s eta 0:02:06
   ----- ---------------------------------- 53.6/385.2 MB 2.7 MB/s eta 0:02:06
   ----- ---------------------------------- 53.7/385.2 MB 2.6 MB/s eta 0:02:07
   ----- ---------------------------------- 53.8/385.2 MB 2.6 MB/s eta 0:02:07
   ----- ---------------------------------- 53.9/385.2 MB 2.6 MB/s eta 0:02:06
   ----- ---------------------------------- 54.0/385.2 MB 2.6 MB/s eta 0:02:07
   ----- ---------------------------------- 54.1/385.2 MB 2.6 MB/s eta 0:02:08
   ----- ---------------------------------- 54.2/385.2 MB 2.6 MB/s eta 0:02:09
   ----- ---------------------------------- 54.3/385.2 MB 2.6 MB/s eta 0:02:09
   ----- ---------------------------------- 54.4/385.2 MB 2.6 MB/s eta 0:02:09
   ----- ---------------------------------- 54.5/385.2 MB 2.6 MB/s eta 0:02:10
   ----- ---------------------------------- 54.5/385.2 MB 2.5 MB/s eta 0:02:10
   ----- ---------------------------------- 54.7/385.2 MB 2.5 MB/s eta 0:02:11
   ----- ---------------------------------- 54.7/385.2 MB 2.5 MB/s eta 0:02:11
   ----- ---------------------------------- 54.8/385.2 MB 2.5 MB/s eta 0:02:12
   ----- ---------------------------------- 54.9/385.2 MB 2.5 MB/s eta 0:02:12
   ----- ---------------------------------- 55.0/385.2 MB 2.5 MB/s eta 0:02:12
   ----- ---------------------------------- 55.1/385.2 MB 2.5 MB/s eta 0:02:13
   ----- ---------------------------------- 55.2/385.2 MB 2.5 MB/s eta 0:02:13
   ----- ---------------------------------- 55.3/385.2 MB 2.5 MB/s eta 0:02:13
   ----- ---------------------------------- 55.4/385.2 MB 2.5 MB/s eta 0:02:13
   ----- ---------------------------------- 55.5/385.2 MB 2.5 MB/s eta 0:02:14
   ----- ---------------------------------- 55.6/385.2 MB 2.5 MB/s eta 0:02:14
   ----- ---------------------------------- 55.7/385.2 MB 2.5 MB/s eta 0:02:14
   ----- ---------------------------------- 55.8/385.2 MB 2.5 MB/s eta 0:02:14
   ----- ---------------------------------- 55.9/385.2 MB 2.5 MB/s eta 0:02:15
   ----- ---------------------------------- 56.0/385.2 MB 2.5 MB/s eta 0:02:15
   ----- ---------------------------------- 56.1/385.2 MB 2.4 MB/s eta 0:02:16
   ----- ---------------------------------- 56.2/385.2 MB 2.4 MB/s eta 0:02:16
   ----- ---------------------------------- 56.3/385.2 MB 2.4 MB/s eta 0:02:17
   ----- ---------------------------------- 56.4/385.2 MB 2.4 MB/s eta 0:02:16
   ----- ---------------------------------- 56.6/385.2 MB 2.4 MB/s eta 0:02:16
   ----- ---------------------------------- 56.7/385.2 MB 2.4 MB/s eta 0:02:16
   ----- ---------------------------------- 56.8/385.2 MB 2.4 MB/s eta 0:02:16
   ----- ---------------------------------- 56.9/385.2 MB 2.4 MB/s eta 0:02:16
   ----- ---------------------------------- 57.0/385.2 MB 2.4 MB/s eta 0:02:16
   ----- ---------------------------------- 57.2/385.2 MB 2.4 MB/s eta 0:02:16
   ----- ---------------------------------- 57.3/385.2 MB 2.4 MB/s eta 0:02:17
   ----- ---------------------------------- 57.4/385.2 MB 2.4 MB/s eta 0:02:17
   ----- ---------------------------------- 57.5/385.2 MB 2.4 MB/s eta 0:02:17
   ----- ---------------------------------- 57.7/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 57.8/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 57.9/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 58.1/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 58.2/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 58.4/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 58.5/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 58.6/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 58.8/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 58.9/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 59.0/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 59.2/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 59.3/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 59.4/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 59.5/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 59.7/385.2 MB 2.4 MB/s eta 0:02:15
   ------ --------------------------------- 59.8/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 59.9/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 60.0/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 60.1/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 60.3/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 60.4/385.2 MB 2.4 MB/s eta 0:02:15
   ------ --------------------------------- 60.5/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 60.7/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 60.8/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 60.9/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 61.0/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 61.2/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 61.3/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 61.4/385.2 MB 2.4 MB/s eta 0:02:15
   ------ --------------------------------- 61.6/385.2 MB 2.4 MB/s eta 0:02:15
   ------ --------------------------------- 61.7/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 61.8/385.2 MB 2.4 MB/s eta 0:02:15
   ------ --------------------------------- 62.0/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 62.1/385.2 MB 2.4 MB/s eta 0:02:15
   ------ --------------------------------- 62.2/385.2 MB 2.4 MB/s eta 0:02:16
   ------ --------------------------------- 62.3/385.2 MB 2.4 MB/s eta 0:02:15
   ------ --------------------------------- 62.5/385.2 MB 2.4 MB/s eta 0:02:15
   ------ --------------------------------- 62.6/385.2 MB 2.4 MB/s eta 0:02:15
   ------ --------------------------------- 62.7/385.2 MB 2.4 MB/s eta 0:02:15
   ------ --------------------------------- 62.9/385.2 MB 2.4 MB/s eta 0:02:15
   ------ --------------------------------- 63.0/385.2 MB 2.4 MB/s eta 0:02:14
   ------ --------------------------------- 63.1/385.2 MB 2.4 MB/s eta 0:02:14
   ------ --------------------------------- 63.2/385.2 MB 2.4 MB/s eta 0:02:14
   ------ --------------------------------- 63.3/385.2 MB 2.4 MB/s eta 0:02:13
   ------ --------------------------------- 63.5/385.2 MB 2.4 MB/s eta 0:02:13
   ------ --------------------------------- 63.6/385.2 MB 2.4 MB/s eta 0:02:13
   ------ --------------------------------- 63.7/385.2 MB 2.4 MB/s eta 0:02:12
   ------ --------------------------------- 63.8/385.2 MB 2.4 MB/s eta 0:02:12
   ------ --------------------------------- 63.9/385.2 MB 2.4 MB/s eta 0:02:12
   ------ --------------------------------- 64.1/385.2 MB 2.5 MB/s eta 0:02:11
   ------ --------------------------------- 64.2/385.2 MB 2.5 MB/s eta 0:02:11
   ------ --------------------------------- 64.2/385.2 MB 2.5 MB/s eta 0:02:11
   ------ --------------------------------- 64.3/385.2 MB 2.5 MB/s eta 0:02:11
   ------ --------------------------------- 64.4/385.2 MB 2.5 MB/s eta 0:02:11
   ------ --------------------------------- 64.6/385.2 MB 2.5 MB/s eta 0:02:10
   ------ --------------------------------- 64.7/385.2 MB 2.5 MB/s eta 0:02:10
   ------ --------------------------------- 64.7/385.2 MB 2.5 MB/s eta 0:02:11
   ------ --------------------------------- 64.8/385.2 MB 2.5 MB/s eta 0:02:11
   ------ --------------------------------- 64.9/385.2 MB 2.5 MB/s eta 0:02:11
   ------ --------------------------------- 65.0/385.2 MB 2.5 MB/s eta 0:02:11
   ------ --------------------------------- 65.1/385.2 MB 2.5 MB/s eta 0:02:10
   ------ --------------------------------- 65.2/385.2 MB 2.5 MB/s eta 0:02:10
   ------ --------------------------------- 65.3/385.2 MB 2.5 MB/s eta 0:02:10
   ------ --------------------------------- 65.4/385.2 MB 2.5 MB/s eta 0:02:10
   ------ --------------------------------- 65.5/385.2 MB 2.5 MB/s eta 0:02:09
   ------ --------------------------------- 65.6/385.2 MB 2.5 MB/s eta 0:02:09
   ------ --------------------------------- 65.7/385.2 MB 2.5 MB/s eta 0:02:08
   ------ --------------------------------- 65.8/385.2 MB 2.5 MB/s eta 0:02:09
   ------ --------------------------------- 65.9/385.2 MB 2.5 MB/s eta 0:02:10
   ------ --------------------------------- 66.0/385.2 MB 2.5 MB/s eta 0:02:10
   ------ --------------------------------- 66.1/385.2 MB 2.5 MB/s eta 0:02:10
   ------ --------------------------------- 66.3/385.2 MB 2.5 MB/s eta 0:02:09
   ------ --------------------------------- 66.3/385.2 MB 2.5 MB/s eta 0:02:09
   ------ --------------------------------- 66.4/385.2 MB 2.5 MB/s eta 0:02:09
   ------ --------------------------------- 66.5/385.2 MB 2.5 MB/s eta 0:02:10
   ------ --------------------------------- 66.6/385.2 MB 2.5 MB/s eta 0:02:10
   ------ --------------------------------- 66.7/385.2 MB 2.5 MB/s eta 0:02:10
   ------ --------------------------------- 66.8/385.2 MB 2.5 MB/s eta 0:02:10
   ------ --------------------------------- 66.9/385.2 MB 2.4 MB/s eta 0:02:11
   ------ --------------------------------- 67.0/385.2 MB 2.4 MB/s eta 0:02:11
   ------ --------------------------------- 67.1/385.2 MB 2.4 MB/s eta 0:02:11
   ------ --------------------------------- 67.2/385.2 MB 2.4 MB/s eta 0:02:11
   ------ --------------------------------- 67.3/385.2 MB 2.4 MB/s eta 0:02:12
   ------ --------------------------------- 67.4/385.2 MB 2.4 MB/s eta 0:02:12
   ------- -------------------------------- 67.5/385.2 MB 2.4 MB/s eta 0:02:12
   ------- -------------------------------- 67.6/385.2 MB 2.4 MB/s eta 0:02:12
   ------- -------------------------------- 67.7/385.2 MB 2.4 MB/s eta 0:02:13
   ------- -------------------------------- 67.8/385.2 MB 2.4 MB/s eta 0:02:13
   ------- -------------------------------- 67.9/385.2 MB 2.4 MB/s eta 0:02:13
   ------- -------------------------------- 68.0/385.2 MB 2.4 MB/s eta 0:02:13
   ------- -------------------------------- 68.2/385.2 MB 2.4 MB/s eta 0:02:13
   ------- -------------------------------- 68.3/385.2 MB 2.4 MB/s eta 0:02:14
   ------- -------------------------------- 68.4/385.2 MB 2.4 MB/s eta 0:02:14
   ------- -------------------------------- 68.5/385.2 MB 2.4 MB/s eta 0:02:14
   ------- -------------------------------- 68.6/385.2 MB 2.4 MB/s eta 0:02:13
   ------- -------------------------------- 68.8/385.2 MB 2.4 MB/s eta 0:02:13
   ------- -------------------------------- 68.9/385.2 MB 2.4 MB/s eta 0:02:13
   ------- -------------------------------- 69.0/385.2 MB 2.4 MB/s eta 0:02:13
   ------- -------------------------------- 69.2/385.2 MB 2.4 MB/s eta 0:02:13
   ------- -------------------------------- 69.3/385.2 MB 2.4 MB/s eta 0:02:13
   ------- -------------------------------- 69.4/385.2 MB 2.4 MB/s eta 0:02:13
   ------- -------------------------------- 69.6/385.2 MB 2.4 MB/s eta 0:02:13
   ------- -------------------------------- 69.7/385.2 MB 2.4 MB/s eta 0:02:13
   ------- -------------------------------- 69.8/385.2 MB 2.4 MB/s eta 0:02:12
   ------- -------------------------------- 70.0/385.2 MB 2.4 MB/s eta 0:02:12
   ------- -------------------------------- 70.1/385.2 MB 2.4 MB/s eta 0:02:12
   ------- -------------------------------- 70.2/385.2 MB 2.4 MB/s eta 0:02:12
   ------- -------------------------------- 70.3/385.2 MB 2.4 MB/s eta 0:02:12
   ------- -------------------------------- 70.5/385.2 MB 2.4 MB/s eta 0:02:12
   ------- -------------------------------- 70.6/385.2 MB 2.4 MB/s eta 0:02:12
   ------- -------------------------------- 70.7/385.2 MB 2.4 MB/s eta 0:02:12
   ------- -------------------------------- 70.9/385.2 MB 2.4 MB/s eta 0:02:12
   ------- -------------------------------- 71.0/385.2 MB 2.4 MB/s eta 0:02:12
   ------- -------------------------------- 71.1/385.2 MB 2.4 MB/s eta 0:02:11
   ------- -------------------------------- 71.3/385.2 MB 2.4 MB/s eta 0:02:11
   ------- -------------------------------- 71.4/385.2 MB 2.4 MB/s eta 0:02:11
   ------- -------------------------------- 71.5/385.2 MB 2.4 MB/s eta 0:02:11
   ------- -------------------------------- 71.6/385.2 MB 2.4 MB/s eta 0:02:11
   ------- -------------------------------- 71.7/385.2 MB 2.4 MB/s eta 0:02:11
   ------- -------------------------------- 71.8/385.2 MB 2.4 MB/s eta 0:02:12
   ------- -------------------------------- 72.0/385.2 MB 2.4 MB/s eta 0:02:12
   ------- -------------------------------- 72.1/385.2 MB 2.4 MB/s eta 0:02:12
   ------- -------------------------------- 72.2/385.2 MB 2.4 MB/s eta 0:02:12
   ------- -------------------------------- 72.3/385.2 MB 2.4 MB/s eta 0:02:12
   ------- -------------------------------- 72.4/385.2 MB 2.4 MB/s eta 0:02:13
   ------- -------------------------------- 72.5/385.2 MB 2.4 MB/s eta 0:02:13
   ------- -------------------------------- 72.6/385.2 MB 2.4 MB/s eta 0:02:13
   ------- -------------------------------- 72.7/385.2 MB 2.4 MB/s eta 0:02:13
   ------- -------------------------------- 72.8/385.2 MB 2.4 MB/s eta 0:02:13
   ------- -------------------------------- 73.0/385.2 MB 2.4 MB/s eta 0:02:13
   ------- -------------------------------- 73.1/385.2 MB 2.4 MB/s eta 0:02:13
   ------- -------------------------------- 73.2/385.2 MB 2.4 MB/s eta 0:02:13
   ------- -------------------------------- 73.3/385.2 MB 2.3 MB/s eta 0:02:13
   ------- -------------------------------- 73.4/385.2 MB 2.3 MB/s eta 0:02:13
   ------- -------------------------------- 73.6/385.2 MB 2.3 MB/s eta 0:02:14
   ------- -------------------------------- 73.7/385.2 MB 2.3 MB/s eta 0:02:13
   ------- -------------------------------- 73.8/385.2 MB 2.3 MB/s eta 0:02:14
   ------- -------------------------------- 73.9/385.2 MB 2.3 MB/s eta 0:02:14
   ------- -------------------------------- 74.0/385.2 MB 2.3 MB/s eta 0:02:14
   ------- -------------------------------- 74.1/385.2 MB 2.3 MB/s eta 0:02:13
   ------- -------------------------------- 74.2/385.2 MB 2.3 MB/s eta 0:02:14
   ------- -------------------------------- 74.3/385.2 MB 2.3 MB/s eta 0:02:13
   ------- -------------------------------- 74.3/385.2 MB 2.3 MB/s eta 0:02:15
   ------- -------------------------------- 74.4/385.2 MB 2.3 MB/s eta 0:02:16
   ------- -------------------------------- 74.4/385.2 MB 2.3 MB/s eta 0:02:16
   ------- -------------------------------- 74.5/385.2 MB 2.3 MB/s eta 0:02:16
   ------- -------------------------------- 74.5/385.2 MB 2.3 MB/s eta 0:02:18
   ------- -------------------------------- 74.5/385.2 MB 2.3 MB/s eta 0:02:18
   ------- -------------------------------- 74.5/385.2 MB 2.3 MB/s eta 0:02:18
   ------- -------------------------------- 74.5/385.2 MB 2.3 MB/s eta 0:02:18
   ------- -------------------------------- 74.5/385.2 MB 2.3 MB/s eta 0:02:18
   ------- -------------------------------- 74.5/385.2 MB 2.3 MB/s eta 0:02:18
   ------- -------------------------------- 74.6/385.2 MB 2.1 MB/s eta 0:02:26
   ------- -------------------------------- 74.6/385.2 MB 2.2 MB/s eta 0:02:25
   ------- -------------------------------- 74.8/385.2 MB 2.2 MB/s eta 0:02:24
   ------- -------------------------------- 75.1/385.2 MB 2.2 MB/s eta 0:02:22
   ------- -------------------------------- 75.1/385.2 MB 2.2 MB/s eta 0:02:22
   ------- -------------------------------- 75.1/385.2 MB 2.2 MB/s eta 0:02:24
   ------- -------------------------------- 75.1/385.2 MB 2.2 MB/s eta 0:02:24
   ------- -------------------------------- 75.2/385.2 MB 2.1 MB/s eta 0:02:25
   ------- -------------------------------- 75.3/385.2 MB 2.1 MB/s eta 0:02:26
   ------- -------------------------------- 75.3/385.2 MB 2.1 MB/s eta 0:02:27
   ------- -------------------------------- 75.3/385.2 MB 2.1 MB/s eta 0:02:27
   ------- -------------------------------- 75.3/385.2 MB 2.1 MB/s eta 0:02:30
   ------- -------------------------------- 75.3/385.2 MB 2.1 MB/s eta 0:02:30
   ------- -------------------------------- 75.3/385.2 MB 2.0 MB/s eta 0:02:32
   ------- -------------------------------- 75.6/385.2 MB 2.1 MB/s eta 0:02:29
   ------- -------------------------------- 75.6/385.2 MB 2.1 MB/s eta 0:02:29
   ------- -------------------------------- 75.6/385.2 MB 2.1 MB/s eta 0:02:29
   ------- -------------------------------- 75.6/385.2 MB 2.1 MB/s eta 0:02:29
   ------- -------------------------------- 75.8/385.2 MB 2.0 MB/s eta 0:02:33
   ------- -------------------------------- 75.8/385.2 MB 2.0 MB/s eta 0:02:34
   ------- -------------------------------- 75.9/385.2 MB 2.0 MB/s eta 0:02:34
   ------- -------------------------------- 76.1/385.2 MB 2.0 MB/s eta 0:02:33
   ------- -------------------------------- 76.2/385.2 MB 2.0 MB/s eta 0:02:32
   ------- -------------------------------- 76.3/385.2 MB 2.0 MB/s eta 0:02:32
   ------- -------------------------------- 76.4/385.2 MB 2.0 MB/s eta 0:02:32
   ------- -------------------------------- 76.5/385.2 MB 2.0 MB/s eta 0:02:33
   ------- -------------------------------- 76.6/385.2 MB 2.0 MB/s eta 0:02:32
   ------- -------------------------------- 76.7/385.2 MB 2.0 MB/s eta 0:02:32
   ------- -------------------------------- 76.8/385.2 MB 2.0 MB/s eta 0:02:31
   ------- -------------------------------- 76.9/385.2 MB 2.1 MB/s eta 0:02:31
   ------- -------------------------------- 77.0/385.2 MB 2.0 MB/s eta 0:02:32
   -------- ------------------------------- 77.1/385.2 MB 2.0 MB/s eta 0:02:31
   -------- ------------------------------- 77.3/385.2 MB 2.1 MB/s eta 0:02:31
   -------- ------------------------------- 77.4/385.2 MB 2.1 MB/s eta 0:02:30
   -------- ------------------------------- 77.5/385.2 MB 2.1 MB/s eta 0:02:30
   -------- ------------------------------- 77.6/385.2 MB 2.1 MB/s eta 0:02:29
   -------- ------------------------------- 77.7/385.2 MB 2.1 MB/s eta 0:02:29
   -------- ------------------------------- 77.8/385.2 MB 2.1 MB/s eta 0:02:29
   -------- ------------------------------- 77.9/385.2 MB 2.1 MB/s eta 0:02:29
   -------- ------------------------------- 78.0/385.2 MB 2.1 MB/s eta 0:02:30
   -------- ------------------------------- 78.1/385.2 MB 2.1 MB/s eta 0:02:29
   -------- ------------------------------- 78.2/385.2 MB 2.1 MB/s eta 0:02:29
   -------- ------------------------------- 78.3/385.2 MB 2.1 MB/s eta 0:02:29
   -------- ------------------------------- 78.4/385.2 MB 2.1 MB/s eta 0:02:29
   -------- ------------------------------- 78.6/385.2 MB 2.1 MB/s eta 0:02:29
   -------- ------------------------------- 78.7/385.2 MB 2.1 MB/s eta 0:02:29
   -------- ------------------------------- 78.8/385.2 MB 2.1 MB/s eta 0:02:29
   -------- ------------------------------- 78.9/385.2 MB 2.1 MB/s eta 0:02:30
   -------- ------------------------------- 79.0/385.2 MB 2.1 MB/s eta 0:02:30
   -------- ------------------------------- 79.1/385.2 MB 2.0 MB/s eta 0:02:30
   -------- ------------------------------- 79.3/385.2 MB 2.1 MB/s eta 0:02:30
   -------- ------------------------------- 79.4/385.2 MB 2.0 MB/s eta 0:02:30
   -------- ------------------------------- 79.5/385.2 MB 2.0 MB/s eta 0:02:30
   -------- ------------------------------- 79.6/385.2 MB 2.1 MB/s eta 0:02:29
   -------- ------------------------------- 79.7/385.2 MB 2.0 MB/s eta 0:02:30
   -------- ------------------------------- 79.9/385.2 MB 2.0 MB/s eta 0:02:30
   -------- ------------------------------- 80.0/385.2 MB 2.0 MB/s eta 0:02:30
   -------- ------------------------------- 80.1/385.2 MB 2.0 MB/s eta 0:02:30
   -------- ------------------------------- 80.2/385.2 MB 2.0 MB/s eta 0:02:30
   -------- ------------------------------- 80.3/385.2 MB 2.0 MB/s eta 0:02:30
   -------- ------------------------------- 80.4/385.2 MB 2.0 MB/s eta 0:02:31
   -------- ------------------------------- 80.5/385.2 MB 2.0 MB/s eta 0:02:31
   -------- ------------------------------- 80.6/385.2 MB 2.0 MB/s eta 0:02:31
   -------- ------------------------------- 80.7/385.2 MB 2.0 MB/s eta 0:02:31
   -------- ------------------------------- 80.9/385.2 MB 2.0 MB/s eta 0:02:31
   -------- ------------------------------- 81.0/385.2 MB 2.0 MB/s eta 0:02:31
   -------- ------------------------------- 81.1/385.2 MB 2.0 MB/s eta 0:02:31
   -------- ------------------------------- 81.3/385.2 MB 2.0 MB/s eta 0:02:30
   -------- ------------------------------- 81.4/385.2 MB 2.0 MB/s eta 0:02:31
   -------- ------------------------------- 81.5/385.2 MB 2.0 MB/s eta 0:02:31
   -------- ------------------------------- 81.6/385.2 MB 2.0 MB/s eta 0:02:32
   -------- ------------------------------- 81.8/385.2 MB 2.0 MB/s eta 0:02:31
   -------- ------------------------------- 81.9/385.2 MB 2.0 MB/s eta 0:02:31
   -------- ------------------------------- 82.0/385.2 MB 2.0 MB/s eta 0:02:31
   -------- ------------------------------- 82.2/385.2 MB 2.0 MB/s eta 0:02:31
   -------- ------------------------------- 82.3/385.2 MB 2.0 MB/s eta 0:02:30
   -------- ------------------------------- 82.4/385.2 MB 2.0 MB/s eta 0:02:30
   -------- ------------------------------- 82.5/385.2 MB 2.0 MB/s eta 0:02:30
   -------- ------------------------------- 82.5/385.2 MB 2.0 MB/s eta 0:02:33
   -------- ------------------------------- 82.6/385.2 MB 2.0 MB/s eta 0:02:33
   -------- ------------------------------- 82.7/385.2 MB 2.0 MB/s eta 0:02:33
   -------- ------------------------------- 82.8/385.2 MB 2.0 MB/s eta 0:02:32
   -------- ------------------------------- 82.9/385.2 MB 2.0 MB/s eta 0:02:32
   -------- ------------------------------- 83.0/385.2 MB 2.0 MB/s eta 0:02:32
   -------- ------------------------------- 83.1/385.2 MB 2.0 MB/s eta 0:02:32
   -------- ------------------------------- 83.2/385.2 MB 2.0 MB/s eta 0:02:33
   -------- ------------------------------- 83.4/385.2 MB 2.0 MB/s eta 0:02:33
   -------- ------------------------------- 83.5/385.2 MB 2.0 MB/s eta 0:02:32
   -------- ------------------------------- 83.6/385.2 MB 2.0 MB/s eta 0:02:32
   -------- ------------------------------- 83.7/385.2 MB 2.0 MB/s eta 0:02:32
   -------- ------------------------------- 83.8/385.2 MB 2.0 MB/s eta 0:02:32
   -------- ------------------------------- 83.9/385.2 MB 2.0 MB/s eta 0:02:32
   -------- ------------------------------- 84.1/385.2 MB 2.0 MB/s eta 0:02:32
   -------- ------------------------------- 84.2/385.2 MB 2.0 MB/s eta 0:02:32
   -------- ------------------------------- 84.3/385.2 MB 2.0 MB/s eta 0:02:32
   -------- ------------------------------- 84.5/385.2 MB 2.0 MB/s eta 0:02:31
   -------- ------------------------------- 84.6/385.2 MB 2.0 MB/s eta 0:02:28
   -------- ------------------------------- 84.7/385.2 MB 2.1 MB/s eta 0:02:25
   -------- ------------------------------- 84.8/385.2 MB 2.2 MB/s eta 0:02:19
   -------- ------------------------------- 85.0/385.2 MB 2.2 MB/s eta 0:02:18
   -------- ------------------------------- 85.1/385.2 MB 2.2 MB/s eta 0:02:18
   -------- ------------------------------- 85.2/385.2 MB 2.2 MB/s eta 0:02:18
   -------- ------------------------------- 85.3/385.2 MB 2.2 MB/s eta 0:02:16
   -------- ------------------------------- 85.4/385.2 MB 2.2 MB/s eta 0:02:16
   -------- ------------------------------- 85.5/385.2 MB 2.3 MB/s eta 0:02:11
   -------- ------------------------------- 85.6/385.2 MB 2.3 MB/s eta 0:02:09
   -------- ------------------------------- 85.8/385.2 MB 2.3 MB/s eta 0:02:11
   -------- ------------------------------- 85.9/385.2 MB 2.4 MB/s eta 0:02:06
   -------- ------------------------------- 86.0/385.2 MB 2.4 MB/s eta 0:02:06
   -------- ------------------------------- 86.2/385.2 MB 2.4 MB/s eta 0:02:05
   -------- ------------------------------- 86.3/385.2 MB 2.4 MB/s eta 0:02:05
   -------- ------------------------------- 86.4/385.2 MB 2.4 MB/s eta 0:02:05
   -------- ------------------------------- 86.6/385.2 MB 2.4 MB/s eta 0:02:04
   --------- ------------------------------ 86.7/385.2 MB 2.4 MB/s eta 0:02:04
   --------- ------------------------------ 86.8/385.2 MB 2.4 MB/s eta 0:02:04
   --------- ------------------------------ 87.0/385.2 MB 2.4 MB/s eta 0:02:03
   --------- ------------------------------ 87.0/385.2 MB 2.4 MB/s eta 0:02:03
   --------- ------------------------------ 87.2/385.2 MB 2.4 MB/s eta 0:02:03
   --------- ------------------------------ 87.3/385.2 MB 2.4 MB/s eta 0:02:03
   --------- ------------------------------ 87.4/385.2 MB 2.4 MB/s eta 0:02:03
   --------- ------------------------------ 87.6/385.2 MB 2.4 MB/s eta 0:02:02
   --------- ------------------------------ 87.7/385.2 MB 2.4 MB/s eta 0:02:02
   --------- ------------------------------ 87.8/385.2 MB 2.5 MB/s eta 0:02:02
   --------- ------------------------------ 87.9/385.2 MB 2.5 MB/s eta 0:02:01
   --------- ------------------------------ 88.1/385.2 MB 2.5 MB/s eta 0:02:02
   --------- ------------------------------ 88.2/385.2 MB 2.5 MB/s eta 0:02:01
   --------- ------------------------------ 88.3/385.2 MB 2.5 MB/s eta 0:02:01
   --------- ------------------------------ 88.4/385.2 MB 2.5 MB/s eta 0:02:01
   --------- ------------------------------ 88.5/385.2 MB 2.5 MB/s eta 0:02:00
   --------- ------------------------------ 88.6/385.2 MB 2.5 MB/s eta 0:02:01
   --------- ------------------------------ 88.8/385.2 MB 2.5 MB/s eta 0:02:00
   --------- ------------------------------ 88.9/385.2 MB 2.5 MB/s eta 0:01:59
   --------- ------------------------------ 89.0/385.2 MB 2.5 MB/s eta 0:02:00
   --------- ------------------------------ 89.1/385.2 MB 2.5 MB/s eta 0:01:59
   --------- ------------------------------ 89.3/385.2 MB 2.5 MB/s eta 0:01:59
   --------- ------------------------------ 89.4/385.2 MB 2.5 MB/s eta 0:01:59
   --------- ------------------------------ 89.5/385.2 MB 2.5 MB/s eta 0:01:59
   --------- ------------------------------ 89.7/385.2 MB 2.5 MB/s eta 0:01:59
   --------- ------------------------------ 89.8/385.2 MB 2.5 MB/s eta 0:01:59
   --------- ------------------------------ 89.9/385.2 MB 2.5 MB/s eta 0:01:59
   --------- ------------------------------ 90.0/385.2 MB 2.5 MB/s eta 0:01:59
   --------- ------------------------------ 90.2/385.2 MB 2.5 MB/s eta 0:01:59
   --------- ------------------------------ 90.2/385.2 MB 2.5 MB/s eta 0:01:59
   --------- ------------------------------ 90.4/385.2 MB 2.5 MB/s eta 0:01:59
   --------- ------------------------------ 90.4/385.2 MB 2.5 MB/s eta 0:01:59
   --------- ------------------------------ 90.5/385.2 MB 2.5 MB/s eta 0:02:00
   --------- ------------------------------ 90.6/385.2 MB 2.5 MB/s eta 0:01:59
   --------- ------------------------------ 90.7/385.2 MB 2.5 MB/s eta 0:02:00
   --------- ------------------------------ 90.8/385.2 MB 2.5 MB/s eta 0:02:00
   --------- ------------------------------ 90.9/385.2 MB 2.5 MB/s eta 0:02:00
   --------- ------------------------------ 90.9/385.2 MB 2.4 MB/s eta 0:02:01
   --------- ------------------------------ 91.0/385.2 MB 2.4 MB/s eta 0:02:01
   --------- ------------------------------ 91.1/385.2 MB 2.4 MB/s eta 0:02:02
   --------- ------------------------------ 91.1/385.2 MB 2.4 MB/s eta 0:02:03
   --------- ------------------------------ 91.2/385.2 MB 2.4 MB/s eta 0:02:04
   --------- ------------------------------ 91.3/385.2 MB 2.4 MB/s eta 0:02:03
   --------- ------------------------------ 91.3/385.2 MB 2.4 MB/s eta 0:02:04
   --------- ------------------------------ 91.4/385.2 MB 2.4 MB/s eta 0:02:05
   --------- ------------------------------ 91.5/385.2 MB 2.4 MB/s eta 0:02:05
   --------- ------------------------------ 91.6/385.2 MB 2.4 MB/s eta 0:02:05
   --------- ------------------------------ 91.8/385.2 MB 2.4 MB/s eta 0:02:05
   --------- ------------------------------ 91.9/385.2 MB 2.4 MB/s eta 0:02:05
   --------- ------------------------------ 92.0/385.2 MB 2.4 MB/s eta 0:02:05
   --------- ------------------------------ 92.1/385.2 MB 2.4 MB/s eta 0:02:04
   --------- ------------------------------ 92.3/385.2 MB 2.4 MB/s eta 0:02:05
   --------- ------------------------------ 92.4/385.2 MB 2.4 MB/s eta 0:02:05
   --------- ------------------------------ 92.6/385.2 MB 2.4 MB/s eta 0:02:04
   --------- ------------------------------ 92.7/385.2 MB 2.4 MB/s eta 0:02:04
   --------- ------------------------------ 92.8/385.2 MB 2.4 MB/s eta 0:02:01
   --------- ------------------------------ 92.9/385.2 MB 2.4 MB/s eta 0:02:01
   --------- ------------------------------ 93.1/385.2 MB 2.4 MB/s eta 0:02:01
   --------- ------------------------------ 93.2/385.2 MB 2.4 MB/s eta 0:02:01
   --------- ------------------------------ 93.3/385.2 MB 2.4 MB/s eta 0:02:00
   --------- ------------------------------ 93.4/385.2 MB 2.4 MB/s eta 0:02:01
   --------- ------------------------------ 93.6/385.2 MB 2.4 MB/s eta 0:02:00
   --------- ------------------------------ 93.7/385.2 MB 2.4 MB/s eta 0:02:00
   --------- ------------------------------ 93.8/385.2 MB 2.5 MB/s eta 0:01:59
   --------- ------------------------------ 94.0/385.2 MB 2.5 MB/s eta 0:01:59
   --------- ------------------------------ 94.1/385.2 MB 2.5 MB/s eta 0:01:59
   --------- ------------------------------ 94.2/385.2 MB 2.5 MB/s eta 0:01:59
   --------- ------------------------------ 94.3/385.2 MB 2.5 MB/s eta 0:01:59
   --------- ------------------------------ 94.5/385.2 MB 2.5 MB/s eta 0:01:59
   --------- ------------------------------ 94.6/385.2 MB 2.4 MB/s eta 0:01:59
   --------- ------------------------------ 94.7/385.2 MB 2.4 MB/s eta 0:01:59
   --------- ------------------------------ 94.8/385.2 MB 2.4 MB/s eta 0:01:59
   --------- ------------------------------ 94.9/385.2 MB 2.4 MB/s eta 0:01:59
   --------- ------------------------------ 95.1/385.2 MB 2.4 MB/s eta 0:01:59
   --------- ------------------------------ 95.2/385.2 MB 2.4 MB/s eta 0:02:00
   --------- ------------------------------ 95.2/385.2 MB 2.4 MB/s eta 0:02:01
   --------- ------------------------------ 95.2/385.2 MB 2.4 MB/s eta 0:02:01
   --------- ------------------------------ 95.3/385.2 MB 2.4 MB/s eta 0:02:02
   --------- ------------------------------ 95.5/385.2 MB 2.4 MB/s eta 0:02:01
   --------- ------------------------------ 95.6/385.2 MB 2.4 MB/s eta 0:02:00
   --------- ------------------------------ 95.7/385.2 MB 2.4 MB/s eta 0:02:00
   --------- ------------------------------ 95.8/385.2 MB 2.4 MB/s eta 0:02:00
   --------- ------------------------------ 95.9/385.2 MB 2.4 MB/s eta 0:02:01
   --------- ------------------------------ 96.1/385.2 MB 2.4 MB/s eta 0:02:01
   --------- ------------------------------ 96.2/385.2 MB 2.4 MB/s eta 0:02:01
   ---------- ----------------------------- 96.3/385.2 MB 2.4 MB/s eta 0:02:00
   ---------- ----------------------------- 96.5/385.2 MB 2.4 MB/s eta 0:02:01
   ---------- ----------------------------- 96.6/385.2 MB 2.4 MB/s eta 0:02:00
   ---------- ----------------------------- 96.7/385.2 MB 2.4 MB/s eta 0:02:01
   ---------- ----------------------------- 96.8/385.2 MB 2.4 MB/s eta 0:02:00
   ---------- ----------------------------- 97.0/385.2 MB 2.4 MB/s eta 0:02:01
   ---------- ----------------------------- 97.1/385.2 MB 2.4 MB/s eta 0:02:01
   ---------- ----------------------------- 97.2/385.2 MB 2.4 MB/s eta 0:02:00
   ---------- ----------------------------- 97.4/385.2 MB 2.4 MB/s eta 0:02:00
   ---------- ----------------------------- 97.5/385.2 MB 2.4 MB/s eta 0:02:00
   ---------- ----------------------------- 97.6/385.2 MB 2.4 MB/s eta 0:01:59
   ---------- ----------------------------- 97.8/385.2 MB 2.4 MB/s eta 0:01:59
   ---------- ----------------------------- 97.9/385.2 MB 2.4 MB/s eta 0:02:00
   ---------- ----------------------------- 98.0/385.2 MB 2.4 MB/s eta 0:02:00
   ---------- ----------------------------- 98.1/385.2 MB 2.4 MB/s eta 0:02:00
   ---------- ----------------------------- 98.3/385.2 MB 2.4 MB/s eta 0:02:00
   ---------- ----------------------------- 98.4/385.2 MB 2.4 MB/s eta 0:02:00
   ---------- ----------------------------- 98.5/385.2 MB 2.4 MB/s eta 0:02:00
   ---------- ----------------------------- 98.6/385.2 MB 2.4 MB/s eta 0:02:00
   ---------- ----------------------------- 98.8/385.2 MB 2.4 MB/s eta 0:01:59
   ---------- ----------------------------- 98.9/385.2 MB 2.4 MB/s eta 0:01:59
   ---------- ----------------------------- 99.0/385.2 MB 2.4 MB/s eta 0:01:59
   ---------- ----------------------------- 99.2/385.2 MB 2.4 MB/s eta 0:01:59
   ---------- ----------------------------- 99.3/385.2 MB 2.4 MB/s eta 0:01:59
   ---------- ----------------------------- 99.5/385.2 MB 2.4 MB/s eta 0:01:59
   ---------- ----------------------------- 99.6/385.2 MB 2.4 MB/s eta 0:01:59
   ---------- ----------------------------- 99.7/385.2 MB 2.4 MB/s eta 0:01:58
   ---------- ----------------------------- 99.8/385.2 MB 2.4 MB/s eta 0:01:59
   ---------- ----------------------------- 100.0/385.2 MB 2.4 MB/s eta 0:01:58
   ---------- ----------------------------- 100.1/385.2 MB 2.4 MB/s eta 0:01:58
   ---------- ----------------------------- 100.2/385.2 MB 2.4 MB/s eta 0:01:58
   ---------- ----------------------------- 100.4/385.2 MB 2.4 MB/s eta 0:01:58
   ---------- ----------------------------- 100.5/385.2 MB 2.4 MB/s eta 0:01:58
   ---------- ----------------------------- 100.6/385.2 MB 2.4 MB/s eta 0:01:57
   ---------- ----------------------------- 100.8/385.2 MB 2.5 MB/s eta 0:01:56
   ---------- ----------------------------- 100.9/385.2 MB 2.5 MB/s eta 0:01:55
   ---------- ----------------------------- 101.0/385.2 MB 2.5 MB/s eta 0:01:55
   ---------- ----------------------------- 101.2/385.2 MB 2.5 MB/s eta 0:01:53
   ---------- ----------------------------- 101.3/385.2 MB 2.5 MB/s eta 0:01:53
   ---------- ----------------------------- 101.4/385.2 MB 2.6 MB/s eta 0:01:51
   ---------- ----------------------------- 101.6/385.2 MB 2.6 MB/s eta 0:01:49
   ---------- ----------------------------- 101.7/385.2 MB 2.6 MB/s eta 0:01:48
   ---------- ----------------------------- 101.8/385.2 MB 2.6 MB/s eta 0:01:48
   ---------- ----------------------------- 102.0/385.2 MB 2.6 MB/s eta 0:01:48
   ---------- ----------------------------- 102.1/385.2 MB 2.6 MB/s eta 0:01:48
   ---------- ----------------------------- 102.2/385.2 MB 2.6 MB/s eta 0:01:48
   ---------- ----------------------------- 102.4/385.2 MB 2.6 MB/s eta 0:01:48
   ---------- ----------------------------- 102.5/385.2 MB 2.6 MB/s eta 0:01:48
   ---------- ----------------------------- 102.6/385.2 MB 2.6 MB/s eta 0:01:48
   ---------- ----------------------------- 102.8/385.2 MB 2.6 MB/s eta 0:01:47
   ---------- ----------------------------- 102.9/385.2 MB 2.6 MB/s eta 0:01:47
   ---------- ----------------------------- 103.1/385.2 MB 2.7 MB/s eta 0:01:47
   ---------- ----------------------------- 103.2/385.2 MB 2.7 MB/s eta 0:01:46
   ---------- ----------------------------- 103.3/385.2 MB 2.7 MB/s eta 0:01:46
   ---------- ----------------------------- 103.4/385.2 MB 2.7 MB/s eta 0:01:46
   ---------- ----------------------------- 103.6/385.2 MB 2.7 MB/s eta 0:01:46
   ---------- ----------------------------- 103.7/385.2 MB 2.7 MB/s eta 0:01:46
   ---------- ----------------------------- 103.9/385.2 MB 2.7 MB/s eta 0:01:46
   ---------- ----------------------------- 104.0/385.2 MB 2.7 MB/s eta 0:01:46
   ---------- ----------------------------- 104.1/385.2 MB 2.7 MB/s eta 0:01:46
   ---------- ----------------------------- 104.3/385.2 MB 2.7 MB/s eta 0:01:46
   ---------- ----------------------------- 104.4/385.2 MB 2.7 MB/s eta 0:01:46
   ---------- ----------------------------- 104.5/385.2 MB 2.7 MB/s eta 0:01:46
   ---------- ----------------------------- 104.6/385.2 MB 2.7 MB/s eta 0:01:45
   ---------- ----------------------------- 104.8/385.2 MB 2.7 MB/s eta 0:01:45
   ---------- ----------------------------- 104.9/385.2 MB 2.7 MB/s eta 0:01:45
   ---------- ----------------------------- 105.1/385.2 MB 2.7 MB/s eta 0:01:45
   ---------- ----------------------------- 105.2/385.2 MB 2.7 MB/s eta 0:01:45
   ---------- ----------------------------- 105.3/385.2 MB 2.7 MB/s eta 0:01:45
   ---------- ----------------------------- 105.4/385.2 MB 2.7 MB/s eta 0:01:43
   ---------- ----------------------------- 105.6/385.2 MB 2.8 MB/s eta 0:01:42
   ---------- ----------------------------- 105.7/385.2 MB 2.7 MB/s eta 0:01:43
   ---------- ----------------------------- 105.9/385.2 MB 2.8 MB/s eta 0:01:42
   ----------- ---------------------------- 106.0/385.2 MB 2.8 MB/s eta 0:01:42
   ----------- ---------------------------- 106.1/385.2 MB 2.8 MB/s eta 0:01:42
   ----------- ---------------------------- 106.3/385.2 MB 2.8 MB/s eta 0:01:41
   ----------- ---------------------------- 106.4/385.2 MB 2.8 MB/s eta 0:01:41
   ----------- ---------------------------- 106.5/385.2 MB 2.8 MB/s eta 0:01:41
   ----------- ---------------------------- 106.7/385.2 MB 2.8 MB/s eta 0:01:41
   ----------- ---------------------------- 106.8/385.2 MB 2.8 MB/s eta 0:01:40
   ----------- ---------------------------- 106.9/385.2 MB 2.8 MB/s eta 0:01:41
   ----------- ---------------------------- 107.0/385.2 MB 2.8 MB/s eta 0:01:41
   ----------- ---------------------------- 107.2/385.2 MB 2.8 MB/s eta 0:01:40
   ----------- ---------------------------- 107.3/385.2 MB 2.8 MB/s eta 0:01:40
   ----------- ---------------------------- 107.5/385.2 MB 2.8 MB/s eta 0:01:41
   ----------- ---------------------------- 107.6/385.2 MB 2.8 MB/s eta 0:01:40
   ----------- ---------------------------- 107.7/385.2 MB 2.8 MB/s eta 0:01:40
   ----------- ---------------------------- 107.9/385.2 MB 2.8 MB/s eta 0:01:40
   ----------- ---------------------------- 108.0/385.2 MB 2.8 MB/s eta 0:01:40
   ----------- ---------------------------- 108.1/385.2 MB 2.8 MB/s eta 0:01:40
   ----------- ---------------------------- 108.3/385.2 MB 2.8 MB/s eta 0:01:39
   ----------- ---------------------------- 108.4/385.2 MB 2.8 MB/s eta 0:01:39
   ----------- ---------------------------- 108.5/385.2 MB 2.8 MB/s eta 0:01:39
   ----------- ---------------------------- 108.7/385.2 MB 2.8 MB/s eta 0:01:39
   ----------- ---------------------------- 108.8/385.2 MB 2.8 MB/s eta 0:01:39
   ----------- ---------------------------- 108.9/385.2 MB 2.8 MB/s eta 0:01:39
   ----------- ---------------------------- 109.0/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 109.2/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 109.3/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 109.5/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 109.6/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 109.7/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 109.9/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 110.0/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 110.1/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 110.2/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 110.4/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 110.5/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 110.6/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 110.8/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 110.9/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 111.0/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 111.2/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 111.3/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 111.4/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 111.6/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 111.7/385.2 MB 2.8 MB/s eta 0:01:37
   ----------- ---------------------------- 111.8/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 112.0/385.2 MB 2.8 MB/s eta 0:01:37
   ----------- ---------------------------- 112.1/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 112.2/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 112.4/385.2 MB 2.8 MB/s eta 0:01:37
   ----------- ---------------------------- 112.5/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 112.6/385.2 MB 2.8 MB/s eta 0:01:37
   ----------- ---------------------------- 112.8/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 112.9/385.2 MB 2.8 MB/s eta 0:01:37
   ----------- ---------------------------- 113.0/385.2 MB 2.8 MB/s eta 0:01:37
   ----------- ---------------------------- 113.2/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 113.3/385.2 MB 2.8 MB/s eta 0:01:37
   ----------- ---------------------------- 113.4/385.2 MB 2.8 MB/s eta 0:01:37
   ----------- ---------------------------- 113.6/385.2 MB 2.8 MB/s eta 0:01:37
   ----------- ---------------------------- 113.7/385.2 MB 2.8 MB/s eta 0:01:37
   ----------- ---------------------------- 113.8/385.2 MB 2.8 MB/s eta 0:01:37
   ----------- ---------------------------- 114.0/385.2 MB 2.8 MB/s eta 0:01:37
   ----------- ---------------------------- 114.1/385.2 MB 2.8 MB/s eta 0:01:37
   ----------- ---------------------------- 114.2/385.2 MB 2.8 MB/s eta 0:01:37
   ----------- ---------------------------- 114.3/385.2 MB 2.8 MB/s eta 0:01:37
   ----------- ---------------------------- 114.4/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 114.6/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 114.7/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 114.8/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 114.9/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 115.0/385.2 MB 2.8 MB/s eta 0:01:38
   ----------- ---------------------------- 115.0/385.2 MB 2.7 MB/s eta 0:01:39
   ----------- ---------------------------- 115.2/385.2 MB 2.7 MB/s eta 0:01:39
   ----------- ---------------------------- 115.3/385.2 MB 2.7 MB/s eta 0:01:39
   ----------- ---------------------------- 115.4/385.2 MB 2.7 MB/s eta 0:01:40
   ----------- ---------------------------- 115.5/385.2 MB 2.7 MB/s eta 0:01:39
   ------------ --------------------------- 115.6/385.2 MB 2.7 MB/s eta 0:01:39
   ------------ --------------------------- 115.8/385.2 MB 2.7 MB/s eta 0:01:39
   ------------ --------------------------- 115.9/385.2 MB 2.7 MB/s eta 0:01:39
   ------------ --------------------------- 116.0/385.2 MB 2.7 MB/s eta 0:01:40
   ------------ --------------------------- 116.2/385.2 MB 2.7 MB/s eta 0:01:40
   ------------ --------------------------- 116.3/385.2 MB 2.7 MB/s eta 0:01:39
   ------------ --------------------------- 116.4/385.2 MB 2.7 MB/s eta 0:01:39
   ------------ --------------------------- 116.6/385.2 MB 2.7 MB/s eta 0:01:39
   ------------ --------------------------- 116.7/385.2 MB 2.7 MB/s eta 0:01:40
   ------------ --------------------------- 116.8/385.2 MB 2.7 MB/s eta 0:01:39
   ------------ --------------------------- 116.9/385.2 MB 2.7 MB/s eta 0:01:40
   ------------ --------------------------- 117.0/385.2 MB 2.7 MB/s eta 0:01:40
   ------------ --------------------------- 117.1/385.2 MB 2.7 MB/s eta 0:01:40
   ------------ --------------------------- 117.2/385.2 MB 2.7 MB/s eta 0:01:41
   ------------ --------------------------- 117.3/385.2 MB 2.7 MB/s eta 0:01:40
   ------------ --------------------------- 117.4/385.2 MB 2.7 MB/s eta 0:01:42
   ------------ --------------------------- 117.5/385.2 MB 2.7 MB/s eta 0:01:41
   ------------ --------------------------- 117.6/385.2 MB 2.6 MB/s eta 0:01:42
   ------------ --------------------------- 117.7/385.2 MB 2.6 MB/s eta 0:01:43
   ------------ --------------------------- 117.8/385.2 MB 2.6 MB/s eta 0:01:43
   ------------ --------------------------- 117.9/385.2 MB 2.6 MB/s eta 0:01:43
   ------------ --------------------------- 118.0/385.2 MB 2.6 MB/s eta 0:01:43
   ------------ --------------------------- 118.1/385.2 MB 2.6 MB/s eta 0:01:43
   ------------ --------------------------- 118.2/385.2 MB 2.6 MB/s eta 0:01:43
   ------------ --------------------------- 118.4/385.2 MB 2.6 MB/s eta 0:01:43
   ------------ --------------------------- 118.4/385.2 MB 2.6 MB/s eta 0:01:44
   ------------ --------------------------- 118.6/385.2 MB 2.6 MB/s eta 0:01:44
   ------------ --------------------------- 118.7/385.2 MB 2.6 MB/s eta 0:01:44
   ------------ --------------------------- 118.7/385.2 MB 2.6 MB/s eta 0:01:44
   ------------ --------------------------- 118.8/385.2 MB 2.6 MB/s eta 0:01:45
   ------------ --------------------------- 118.9/385.2 MB 2.5 MB/s eta 0:01:45
   ------------ --------------------------- 119.0/385.2 MB 2.5 MB/s eta 0:01:46
   ------------ --------------------------- 119.1/385.2 MB 2.5 MB/s eta 0:01:46
   ------------ --------------------------- 119.1/385.2 MB 2.5 MB/s eta 0:01:46
   ------------ --------------------------- 119.2/385.2 MB 2.5 MB/s eta 0:01:47
   ------------ --------------------------- 119.3/385.2 MB 2.5 MB/s eta 0:01:47
   ------------ --------------------------- 119.4/385.2 MB 2.5 MB/s eta 0:01:47
   ------------ --------------------------- 119.6/385.2 MB 2.5 MB/s eta 0:01:47
   ------------ --------------------------- 119.7/385.2 MB 2.5 MB/s eta 0:01:47
   ------------ --------------------------- 119.8/385.2 MB 2.5 MB/s eta 0:01:47
   ------------ --------------------------- 120.0/385.2 MB 2.5 MB/s eta 0:01:47
   ------------ --------------------------- 120.1/385.2 MB 2.5 MB/s eta 0:01:47
   ------------ --------------------------- 120.2/385.2 MB 2.5 MB/s eta 0:01:47
   ------------ --------------------------- 120.4/385.2 MB 2.5 MB/s eta 0:01:47
   ------------ --------------------------- 120.5/385.2 MB 2.5 MB/s eta 0:01:47
   ------------ --------------------------- 120.6/385.2 MB 2.5 MB/s eta 0:01:47
   ------------ --------------------------- 120.8/385.2 MB 2.5 MB/s eta 0:01:47
   ------------ --------------------------- 120.9/385.2 MB 2.5 MB/s eta 0:01:47
   ------------ --------------------------- 121.0/385.2 MB 2.5 MB/s eta 0:01:47
   ------------ --------------------------- 121.1/385.2 MB 2.5 MB/s eta 0:01:47
   ------------ --------------------------- 121.3/385.2 MB 2.5 MB/s eta 0:01:47
   ------------ --------------------------- 121.4/385.2 MB 2.5 MB/s eta 0:01:46
   ------------ --------------------------- 121.5/385.2 MB 2.5 MB/s eta 0:01:46
   ------------ --------------------------- 121.7/385.2 MB 2.5 MB/s eta 0:01:47
   ------------ --------------------------- 121.8/385.2 MB 2.5 MB/s eta 0:01:47
   ------------ --------------------------- 121.9/385.2 MB 2.5 MB/s eta 0:01:47
   ------------ --------------------------- 122.1/385.2 MB 2.5 MB/s eta 0:01:47
   ------------ --------------------------- 122.2/385.2 MB 2.5 MB/s eta 0:01:47
   ------------ --------------------------- 122.3/385.2 MB 2.5 MB/s eta 0:01:46
   ------------ --------------------------- 122.4/385.2 MB 2.5 MB/s eta 0:01:46
   ------------ --------------------------- 122.6/385.2 MB 2.5 MB/s eta 0:01:46
   ------------ --------------------------- 122.7/385.2 MB 2.5 MB/s eta 0:01:46
   ------------ --------------------------- 122.8/385.2 MB 2.5 MB/s eta 0:01:47
   ------------ --------------------------- 123.0/385.2 MB 2.5 MB/s eta 0:01:46
   ------------ --------------------------- 123.1/385.2 MB 2.5 MB/s eta 0:01:46
   ------------ --------------------------- 123.2/385.2 MB 2.5 MB/s eta 0:01:46
   ------------ --------------------------- 123.4/385.2 MB 2.5 MB/s eta 0:01:46
   ------------ --------------------------- 123.5/385.2 MB 2.5 MB/s eta 0:01:46
   ------------ --------------------------- 123.6/385.2 MB 2.5 MB/s eta 0:01:46
   ------------ --------------------------- 123.8/385.2 MB 2.5 MB/s eta 0:01:46
   ------------ --------------------------- 123.9/385.2 MB 2.5 MB/s eta 0:01:46
   ------------ --------------------------- 124.0/385.2 MB 2.5 MB/s eta 0:01:46
   ------------ --------------------------- 124.1/385.2 MB 2.5 MB/s eta 0:01:46
   ------------ --------------------------- 124.2/385.2 MB 2.5 MB/s eta 0:01:47
   ------------ --------------------------- 124.3/385.2 MB 2.5 MB/s eta 0:01:46
   ------------ --------------------------- 124.5/385.2 MB 2.5 MB/s eta 0:01:46
   ------------ --------------------------- 124.6/385.2 MB 2.5 MB/s eta 0:01:46
   ------------ --------------------------- 124.7/385.2 MB 2.5 MB/s eta 0:01:46
   ------------ --------------------------- 124.8/385.2 MB 2.5 MB/s eta 0:01:46
   ------------ --------------------------- 125.0/385.2 MB 2.5 MB/s eta 0:01:45
   ------------ --------------------------- 125.1/385.2 MB 2.5 MB/s eta 0:01:45
   ------------- -------------------------- 125.2/385.2 MB 2.5 MB/s eta 0:01:45
   ------------- -------------------------- 125.3/385.2 MB 2.5 MB/s eta 0:01:44
   ------------- -------------------------- 125.5/385.2 MB 2.5 MB/s eta 0:01:44
   ------------- -------------------------- 125.6/385.2 MB 2.5 MB/s eta 0:01:44
   ------------- -------------------------- 125.7/385.2 MB 2.5 MB/s eta 0:01:44
   ------------- -------------------------- 125.8/385.2 MB 2.5 MB/s eta 0:01:44
   ------------- -------------------------- 126.0/385.2 MB 2.5 MB/s eta 0:01:44
   ------------- -------------------------- 126.1/385.2 MB 2.5 MB/s eta 0:01:44
   ------------- -------------------------- 126.2/385.2 MB 2.5 MB/s eta 0:01:43
   ------------- -------------------------- 126.4/385.2 MB 2.5 MB/s eta 0:01:44
   ------------- -------------------------- 126.5/385.2 MB 2.5 MB/s eta 0:01:43
   ------------- -------------------------- 126.6/385.2 MB 2.5 MB/s eta 0:01:43
   ------------- -------------------------- 126.8/385.2 MB 2.5 MB/s eta 0:01:44
   ------------- -------------------------- 126.9/385.2 MB 2.5 MB/s eta 0:01:43
   ------------- -------------------------- 127.0/385.2 MB 2.5 MB/s eta 0:01:43
   ------------- -------------------------- 127.2/385.2 MB 2.5 MB/s eta 0:01:43
   ------------- -------------------------- 127.3/385.2 MB 2.5 MB/s eta 0:01:42
   ------------- -------------------------- 127.4/385.2 MB 2.5 MB/s eta 0:01:42
   ------------- -------------------------- 127.6/385.2 MB 2.6 MB/s eta 0:01:41
   ------------- -------------------------- 127.7/385.2 MB 2.6 MB/s eta 0:01:41
   ------------- -------------------------- 127.8/385.2 MB 2.6 MB/s eta 0:01:40
   ------------- -------------------------- 128.0/385.2 MB 2.6 MB/s eta 0:01:40
   ------------- -------------------------- 128.1/385.2 MB 2.6 MB/s eta 0:01:39
   ------------- -------------------------- 128.2/385.2 MB 2.6 MB/s eta 0:01:39
   ------------- -------------------------- 128.3/385.2 MB 2.6 MB/s eta 0:01:39
   ------------- -------------------------- 128.5/385.2 MB 2.6 MB/s eta 0:01:39
   ------------- -------------------------- 128.6/385.2 MB 2.6 MB/s eta 0:01:38
   ------------- -------------------------- 128.7/385.2 MB 2.6 MB/s eta 0:01:38
   ------------- -------------------------- 128.9/385.2 MB 2.6 MB/s eta 0:01:38
   ------------- -------------------------- 129.0/385.2 MB 2.7 MB/s eta 0:01:37
   ------------- -------------------------- 129.1/385.2 MB 2.7 MB/s eta 0:01:37
   ------------- -------------------------- 129.3/385.2 MB 2.7 MB/s eta 0:01:35
   ------------- -------------------------- 129.4/385.2 MB 2.7 MB/s eta 0:01:35
   ------------- -------------------------- 129.5/385.2 MB 2.7 MB/s eta 0:01:34
   ------------- -------------------------- 129.7/385.2 MB 2.7 MB/s eta 0:01:34
   ------------- -------------------------- 129.8/385.2 MB 2.7 MB/s eta 0:01:34
   ------------- -------------------------- 129.9/385.2 MB 2.7 MB/s eta 0:01:34
   ------------- -------------------------- 130.1/385.2 MB 2.7 MB/s eta 0:01:34
   ------------- -------------------------- 130.2/385.2 MB 2.7 MB/s eta 0:01:34
   ------------- -------------------------- 130.3/385.2 MB 2.7 MB/s eta 0:01:34
   ------------- -------------------------- 130.5/385.2 MB 2.7 MB/s eta 0:01:33
   ------------- -------------------------- 130.6/385.2 MB 2.7 MB/s eta 0:01:33
   ------------- -------------------------- 130.7/385.2 MB 2.7 MB/s eta 0:01:34
   ------------- -------------------------- 130.9/385.2 MB 2.7 MB/s eta 0:01:33
   ------------- -------------------------- 130.9/385.2 MB 2.7 MB/s eta 0:01:34
   ------------- -------------------------- 131.1/385.2 MB 2.7 MB/s eta 0:01:34
   ------------- -------------------------- 131.2/385.2 MB 2.7 MB/s eta 0:01:34
   ------------- -------------------------- 131.3/385.2 MB 2.7 MB/s eta 0:01:34
   ------------- -------------------------- 131.5/385.2 MB 2.7 MB/s eta 0:01:34
   ------------- -------------------------- 131.6/385.2 MB 2.7 MB/s eta 0:01:33
   ------------- -------------------------- 131.7/385.2 MB 2.7 MB/s eta 0:01:33
   ------------- -------------------------- 131.9/385.2 MB 2.7 MB/s eta 0:01:33
   ------------- -------------------------- 132.0/385.2 MB 2.7 MB/s eta 0:01:33
   ------------- -------------------------- 132.1/385.2 MB 2.7 MB/s eta 0:01:33
   ------------- -------------------------- 132.3/385.2 MB 2.7 MB/s eta 0:01:33
   ------------- -------------------------- 132.4/385.2 MB 2.7 MB/s eta 0:01:34
   ------------- -------------------------- 132.5/385.2 MB 2.7 MB/s eta 0:01:33
   ------------- -------------------------- 132.7/385.2 MB 2.7 MB/s eta 0:01:33
   ------------- -------------------------- 132.8/385.2 MB 2.7 MB/s eta 0:01:33
   ------------- -------------------------- 132.9/385.2 MB 2.7 MB/s eta 0:01:33
   ------------- -------------------------- 133.1/385.2 MB 2.7 MB/s eta 0:01:33
   ------------- -------------------------- 133.2/385.2 MB 2.7 MB/s eta 0:01:32
   ------------- -------------------------- 133.3/385.2 MB 2.7 MB/s eta 0:01:33
   ------------- -------------------------- 133.5/385.2 MB 2.7 MB/s eta 0:01:33
   ------------- -------------------------- 133.6/385.2 MB 2.7 MB/s eta 0:01:33
   ------------- -------------------------- 133.7/385.2 MB 2.7 MB/s eta 0:01:33
   ------------- -------------------------- 133.9/385.2 MB 2.7 MB/s eta 0:01:32
   ------------- -------------------------- 134.0/385.2 MB 2.7 MB/s eta 0:01:33
   ------------- -------------------------- 134.1/385.2 MB 2.7 MB/s eta 0:01:33
   ------------- -------------------------- 134.3/385.2 MB 2.7 MB/s eta 0:01:32
   ------------- -------------------------- 134.4/385.2 MB 2.7 MB/s eta 0:01:32
   ------------- -------------------------- 134.5/385.2 MB 2.8 MB/s eta 0:01:31
   ------------- -------------------------- 134.6/385.2 MB 2.7 MB/s eta 0:01:32
   ------------- -------------------------- 134.8/385.2 MB 2.8 MB/s eta 0:01:32
   -------------- ------------------------- 134.9/385.2 MB 2.8 MB/s eta 0:01:31
   -------------- ------------------------- 135.1/385.2 MB 2.8 MB/s eta 0:01:31
   -------------- ------------------------- 135.2/385.2 MB 2.8 MB/s eta 0:01:31
   -------------- ------------------------- 135.3/385.2 MB 2.8 MB/s eta 0:01:31
   -------------- ------------------------- 135.5/385.2 MB 2.8 MB/s eta 0:01:30
   -------------- ------------------------- 135.6/385.2 MB 2.8 MB/s eta 0:01:30
   -------------- ------------------------- 135.7/385.2 MB 2.8 MB/s eta 0:01:30
   -------------- ------------------------- 135.8/385.2 MB 2.8 MB/s eta 0:01:30
   -------------- ------------------------- 136.0/385.2 MB 2.8 MB/s eta 0:01:31
   -------------- ------------------------- 136.1/385.2 MB 2.8 MB/s eta 0:01:30
   -------------- ------------------------- 136.3/385.2 MB 2.8 MB/s eta 0:01:30
   -------------- ------------------------- 136.4/385.2 MB 2.8 MB/s eta 0:01:30
   -------------- ------------------------- 136.5/385.2 MB 2.8 MB/s eta 0:01:30
   -------------- ------------------------- 136.6/385.2 MB 2.8 MB/s eta 0:01:30
   -------------- ------------------------- 136.8/385.2 MB 2.8 MB/s eta 0:01:30
   -------------- ------------------------- 136.9/385.2 MB 2.8 MB/s eta 0:01:30
   -------------- ------------------------- 137.1/385.2 MB 2.8 MB/s eta 0:01:30
   -------------- ------------------------- 137.2/385.2 MB 2.8 MB/s eta 0:01:30
   -------------- ------------------------- 137.3/385.2 MB 2.8 MB/s eta 0:01:30
   -------------- ------------------------- 137.4/385.2 MB 2.8 MB/s eta 0:01:30
   -------------- ------------------------- 137.6/385.2 MB 2.8 MB/s eta 0:01:30
   -------------- ------------------------- 137.7/385.2 MB 2.8 MB/s eta 0:01:30
   -------------- ------------------------- 137.8/385.2 MB 2.8 MB/s eta 0:01:30
   -------------- ------------------------- 138.0/385.2 MB 2.8 MB/s eta 0:01:30
   -------------- ------------------------- 138.1/385.2 MB 2.8 MB/s eta 0:01:30
   -------------- ------------------------- 138.3/385.2 MB 2.8 MB/s eta 0:01:29
   -------------- ------------------------- 138.4/385.2 MB 2.8 MB/s eta 0:01:29
   -------------- ------------------------- 138.5/385.2 MB 2.8 MB/s eta 0:01:29
   -------------- ------------------------- 138.7/385.2 MB 2.8 MB/s eta 0:01:29
   -------------- ------------------------- 138.8/385.2 MB 2.8 MB/s eta 0:01:29
   -------------- ------------------------- 138.9/385.2 MB 2.8 MB/s eta 0:01:29
   -------------- ------------------------- 139.1/385.2 MB 2.8 MB/s eta 0:01:29
   -------------- ------------------------- 139.2/385.2 MB 2.8 MB/s eta 0:01:30
   -------------- ------------------------- 139.3/385.2 MB 2.8 MB/s eta 0:01:29
   -------------- ------------------------- 139.4/385.2 MB 2.8 MB/s eta 0:01:29
   -------------- ------------------------- 139.6/385.2 MB 2.8 MB/s eta 0:01:29
   -------------- ------------------------- 139.7/385.2 MB 2.8 MB/s eta 0:01:29
   -------------- ------------------------- 139.8/385.2 MB 2.8 MB/s eta 0:01:29
   -------------- ------------------------- 140.0/385.2 MB 2.8 MB/s eta 0:01:29
   -------------- ------------------------- 140.1/385.2 MB 2.8 MB/s eta 0:01:29
   -------------- ------------------------- 140.2/385.2 MB 2.8 MB/s eta 0:01:29
   -------------- ------------------------- 140.4/385.2 MB 2.8 MB/s eta 0:01:29
   -------------- ------------------------- 140.5/385.2 MB 2.8 MB/s eta 0:01:29
   -------------- ------------------------- 140.6/385.2 MB 2.8 MB/s eta 0:01:29
   -------------- ------------------------- 140.8/385.2 MB 2.8 MB/s eta 0:01:29
   -------------- ------------------------- 140.9/385.2 MB 2.8 MB/s eta 0:01:29
   -------------- ------------------------- 141.0/385.2 MB 2.8 MB/s eta 0:01:29
   -------------- ------------------------- 141.2/385.2 MB 2.8 MB/s eta 0:01:28
   -------------- ------------------------- 141.3/385.2 MB 2.8 MB/s eta 0:01:28
   -------------- ------------------------- 141.4/385.2 MB 2.8 MB/s eta 0:01:28
   -------------- ------------------------- 141.6/385.2 MB 2.8 MB/s eta 0:01:28
   -------------- ------------------------- 141.7/385.2 MB 2.8 MB/s eta 0:01:28
   -------------- ------------------------- 141.8/385.2 MB 2.8 MB/s eta 0:01:28
   -------------- ------------------------- 141.9/385.2 MB 2.8 MB/s eta 0:01:28
   -------------- ------------------------- 142.1/385.2 MB 2.8 MB/s eta 0:01:28
   -------------- ------------------------- 142.2/385.2 MB 2.8 MB/s eta 0:01:28
   -------------- ------------------------- 142.4/385.2 MB 2.8 MB/s eta 0:01:28
   -------------- ------------------------- 142.5/385.2 MB 2.8 MB/s eta 0:01:28
   -------------- ------------------------- 142.6/385.2 MB 2.8 MB/s eta 0:01:28
   -------------- ------------------------- 142.8/385.2 MB 2.8 MB/s eta 0:01:27
   -------------- ------------------------- 142.9/385.2 MB 2.8 MB/s eta 0:01:27
   -------------- ------------------------- 143.0/385.2 MB 2.8 MB/s eta 0:01:28
   -------------- ------------------------- 143.1/385.2 MB 2.8 MB/s eta 0:01:27
   -------------- ------------------------- 143.3/385.2 MB 2.8 MB/s eta 0:01:27
   -------------- ------------------------- 143.4/385.2 MB 2.8 MB/s eta 0:01:27
   -------------- ------------------------- 143.5/385.2 MB 2.8 MB/s eta 0:01:27
   -------------- ------------------------- 143.7/385.2 MB 2.8 MB/s eta 0:01:28
   -------------- ------------------------- 143.8/385.2 MB 2.8 MB/s eta 0:01:27
   -------------- ------------------------- 143.9/385.2 MB 2.8 MB/s eta 0:01:27
   -------------- ------------------------- 144.1/385.2 MB 2.8 MB/s eta 0:01:27
   -------------- ------------------------- 144.2/385.2 MB 2.8 MB/s eta 0:01:27
   -------------- ------------------------- 144.3/385.2 MB 2.8 MB/s eta 0:01:27
   --------------- ------------------------ 144.4/385.2 MB 2.8 MB/s eta 0:01:27
   --------------- ------------------------ 144.6/385.2 MB 2.8 MB/s eta 0:01:27
   --------------- ------------------------ 144.7/385.2 MB 2.8 MB/s eta 0:01:27
   --------------- ------------------------ 144.8/385.2 MB 2.8 MB/s eta 0:01:27
   --------------- ------------------------ 144.9/385.2 MB 2.8 MB/s eta 0:01:27
   --------------- ------------------------ 145.0/385.2 MB 2.8 MB/s eta 0:01:27
   --------------- ------------------------ 145.2/385.2 MB 2.8 MB/s eta 0:01:28
   --------------- ------------------------ 145.3/385.2 MB 2.7 MB/s eta 0:01:28
   --------------- ------------------------ 145.4/385.2 MB 2.7 MB/s eta 0:01:28
   --------------- ------------------------ 145.5/385.2 MB 2.7 MB/s eta 0:01:28
   --------------- ------------------------ 145.7/385.2 MB 2.7 MB/s eta 0:01:28
   --------------- ------------------------ 145.8/385.2 MB 2.7 MB/s eta 0:01:28
   --------------- ------------------------ 145.9/385.2 MB 2.7 MB/s eta 0:01:28
   --------------- ------------------------ 146.0/385.2 MB 2.7 MB/s eta 0:01:28
   --------------- ------------------------ 146.1/385.2 MB 2.7 MB/s eta 0:01:28
   --------------- ------------------------ 146.3/385.2 MB 2.7 MB/s eta 0:01:28
   --------------- ------------------------ 146.4/385.2 MB 2.7 MB/s eta 0:01:28
   --------------- ------------------------ 146.6/385.2 MB 2.7 MB/s eta 0:01:28
   --------------- ------------------------ 146.7/385.2 MB 2.7 MB/s eta 0:01:28
   --------------- ------------------------ 146.8/385.2 MB 2.7 MB/s eta 0:01:27
   --------------- ------------------------ 147.0/385.2 MB 2.7 MB/s eta 0:01:27
   --------------- ------------------------ 147.1/385.2 MB 2.8 MB/s eta 0:01:27
   --------------- ------------------------ 147.2/385.2 MB 2.7 MB/s eta 0:01:28
   --------------- ------------------------ 147.4/385.2 MB 2.7 MB/s eta 0:01:27
   --------------- ------------------------ 147.5/385.2 MB 2.7 MB/s eta 0:01:27
   --------------- ------------------------ 147.6/385.2 MB 2.7 MB/s eta 0:01:27
   --------------- ------------------------ 147.8/385.2 MB 2.8 MB/s eta 0:01:27
   --------------- ------------------------ 147.9/385.2 MB 2.7 MB/s eta 0:01:27
   --------------- ------------------------ 148.0/385.2 MB 2.7 MB/s eta 0:01:27
   --------------- ------------------------ 148.1/385.2 MB 2.7 MB/s eta 0:01:27
   --------------- ------------------------ 148.2/385.2 MB 2.7 MB/s eta 0:01:27
   --------------- ------------------------ 148.4/385.2 MB 2.7 MB/s eta 0:01:27
   --------------- ------------------------ 148.5/385.2 MB 2.7 MB/s eta 0:01:28
   --------------- ------------------------ 148.6/385.2 MB 2.7 MB/s eta 0:01:28
   --------------- ------------------------ 148.7/385.2 MB 2.7 MB/s eta 0:01:28
   --------------- ------------------------ 148.9/385.2 MB 2.7 MB/s eta 0:01:27
   --------------- ------------------------ 149.0/385.2 MB 2.7 MB/s eta 0:01:27
   --------------- ------------------------ 149.1/385.2 MB 2.7 MB/s eta 0:01:27
   --------------- ------------------------ 149.3/385.2 MB 2.7 MB/s eta 0:01:27
   --------------- ------------------------ 149.4/385.2 MB 2.7 MB/s eta 0:01:27
   --------------- ------------------------ 149.5/385.2 MB 2.7 MB/s eta 0:01:27
   --------------- ------------------------ 149.7/385.2 MB 2.7 MB/s eta 0:01:27
   --------------- ------------------------ 149.8/385.2 MB 2.7 MB/s eta 0:01:26
   --------------- ------------------------ 149.9/385.2 MB 2.7 MB/s eta 0:01:27
   --------------- ------------------------ 150.0/385.2 MB 2.7 MB/s eta 0:01:27
   --------------- ------------------------ 150.2/385.2 MB 2.7 MB/s eta 0:01:26
   --------------- ------------------------ 150.3/385.2 MB 2.7 MB/s eta 0:01:27
   --------------- ------------------------ 150.4/385.2 MB 2.7 MB/s eta 0:01:27
   --------------- ------------------------ 150.6/385.2 MB 2.7 MB/s eta 0:01:26
   --------------- ------------------------ 150.7/385.2 MB 2.7 MB/s eta 0:01:26
   --------------- ------------------------ 150.8/385.2 MB 2.7 MB/s eta 0:01:26
   --------------- ------------------------ 151.0/385.2 MB 2.7 MB/s eta 0:01:27
   --------------- ------------------------ 151.1/385.2 MB 2.7 MB/s eta 0:01:26
   --------------- ------------------------ 151.2/385.2 MB 2.7 MB/s eta 0:01:26
   --------------- ------------------------ 151.4/385.2 MB 2.7 MB/s eta 0:01:26
   --------------- ------------------------ 151.5/385.2 MB 2.7 MB/s eta 0:01:26
   --------------- ------------------------ 151.6/385.2 MB 2.7 MB/s eta 0:01:26
   --------------- ------------------------ 151.8/385.2 MB 2.7 MB/s eta 0:01:26
   --------------- ------------------------ 151.9/385.2 MB 2.7 MB/s eta 0:01:26
   --------------- ------------------------ 152.0/385.2 MB 2.7 MB/s eta 0:01:26
   --------------- ------------------------ 152.2/385.2 MB 2.7 MB/s eta 0:01:26
   --------------- ------------------------ 152.3/385.2 MB 2.7 MB/s eta 0:01:26
   --------------- ------------------------ 152.5/385.2 MB 2.7 MB/s eta 0:01:26
   --------------- ------------------------ 152.6/385.2 MB 2.7 MB/s eta 0:01:26
   --------------- ------------------------ 152.7/385.2 MB 2.7 MB/s eta 0:01:26
   --------------- ------------------------ 152.9/385.2 MB 2.7 MB/s eta 0:01:26
   --------------- ------------------------ 153.0/385.2 MB 2.7 MB/s eta 0:01:26
   --------------- ------------------------ 153.1/385.2 MB 2.7 MB/s eta 0:01:26
   --------------- ------------------------ 153.2/385.2 MB 2.7 MB/s eta 0:01:26
   --------------- ------------------------ 153.4/385.2 MB 2.7 MB/s eta 0:01:25
   --------------- ------------------------ 153.5/385.2 MB 2.7 MB/s eta 0:01:25
   --------------- ------------------------ 153.6/385.2 MB 2.7 MB/s eta 0:01:26
   --------------- ------------------------ 153.8/385.2 MB 2.7 MB/s eta 0:01:25
   --------------- ------------------------ 153.9/385.2 MB 2.7 MB/s eta 0:01:26
   --------------- ------------------------ 154.0/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 154.1/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 154.3/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 154.4/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 154.5/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 154.7/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 154.8/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 154.9/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 155.1/385.2 MB 2.8 MB/s eta 0:01:24
   ---------------- ----------------------- 155.2/385.2 MB 2.7 MB/s eta 0:01:24
   ---------------- ----------------------- 155.3/385.2 MB 2.7 MB/s eta 0:01:24
   ---------------- ----------------------- 155.5/385.2 MB 2.8 MB/s eta 0:01:24
   ---------------- ----------------------- 155.6/385.2 MB 2.8 MB/s eta 0:01:24
   ---------------- ----------------------- 155.7/385.2 MB 2.8 MB/s eta 0:01:24
   ---------------- ----------------------- 155.9/385.2 MB 2.8 MB/s eta 0:01:23
   ---------------- ----------------------- 156.0/385.2 MB 2.8 MB/s eta 0:01:23
   ---------------- ----------------------- 156.1/385.2 MB 2.8 MB/s eta 0:01:23
   ---------------- ----------------------- 156.3/385.2 MB 2.8 MB/s eta 0:01:23
   ---------------- ----------------------- 156.4/385.2 MB 2.8 MB/s eta 0:01:23
   ---------------- ----------------------- 156.5/385.2 MB 2.8 MB/s eta 0:01:23
   ---------------- ----------------------- 156.7/385.2 MB 2.8 MB/s eta 0:01:24
   ---------------- ----------------------- 156.9/385.2 MB 2.8 MB/s eta 0:01:23
   ---------------- ----------------------- 157.0/385.2 MB 2.8 MB/s eta 0:01:23
   ---------------- ----------------------- 157.2/385.2 MB 2.8 MB/s eta 0:01:23
   ---------------- ----------------------- 157.3/385.2 MB 2.8 MB/s eta 0:01:23
   ---------------- ----------------------- 157.4/385.2 MB 2.8 MB/s eta 0:01:23
   ---------------- ----------------------- 157.5/385.2 MB 2.7 MB/s eta 0:01:24
   ---------------- ----------------------- 157.6/385.2 MB 2.7 MB/s eta 0:01:24
   ---------------- ----------------------- 157.7/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 157.8/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 157.9/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 158.0/385.2 MB 2.7 MB/s eta 0:01:24
   ---------------- ----------------------- 158.2/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 158.3/385.2 MB 2.7 MB/s eta 0:01:24
   ---------------- ----------------------- 158.4/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 158.5/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 158.6/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 158.7/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 158.8/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 158.9/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 159.0/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 159.2/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 159.3/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 159.4/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 159.6/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 159.7/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 159.8/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 160.0/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 160.1/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 160.2/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 160.3/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 160.5/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 160.6/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 160.7/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 160.8/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 161.0/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 161.1/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 161.2/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 161.3/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 161.4/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 161.6/385.2 MB 2.7 MB/s eta 0:01:25
   ---------------- ----------------------- 161.7/385.2 MB 2.6 MB/s eta 0:01:25
   ---------------- ----------------------- 161.8/385.2 MB 2.6 MB/s eta 0:01:25
   ---------------- ----------------------- 161.9/385.2 MB 2.6 MB/s eta 0:01:25
   ---------------- ----------------------- 162.0/385.2 MB 2.6 MB/s eta 0:01:26
   ---------------- ----------------------- 162.1/385.2 MB 2.6 MB/s eta 0:01:25
   ---------------- ----------------------- 162.3/385.2 MB 2.6 MB/s eta 0:01:26
   ---------------- ----------------------- 162.4/385.2 MB 2.6 MB/s eta 0:01:26
   ---------------- ----------------------- 162.5/385.2 MB 2.6 MB/s eta 0:01:26
   ---------------- ----------------------- 162.6/385.2 MB 2.6 MB/s eta 0:01:26
   ---------------- ----------------------- 162.7/385.2 MB 2.6 MB/s eta 0:01:26
   ---------------- ----------------------- 162.8/385.2 MB 2.6 MB/s eta 0:01:26
   ---------------- ----------------------- 163.0/385.2 MB 2.6 MB/s eta 0:01:26
   ---------------- ----------------------- 163.1/385.2 MB 2.6 MB/s eta 0:01:26
   ---------------- ----------------------- 163.2/385.2 MB 2.6 MB/s eta 0:01:26
   ---------------- ----------------------- 163.3/385.2 MB 2.6 MB/s eta 0:01:26
   ---------------- ----------------------- 163.5/385.2 MB 2.6 MB/s eta 0:01:27
   ---------------- ----------------------- 163.5/385.2 MB 2.6 MB/s eta 0:01:27
   ---------------- ----------------------- 163.6/385.2 MB 2.6 MB/s eta 0:01:27
   ----------------- ---------------------- 163.8/385.2 MB 2.6 MB/s eta 0:01:27
   ----------------- ---------------------- 163.9/385.2 MB 2.6 MB/s eta 0:01:27
   ----------------- ---------------------- 164.0/385.2 MB 2.5 MB/s eta 0:01:27
   ----------------- ---------------------- 164.1/385.2 MB 2.6 MB/s eta 0:01:27
   ----------------- ---------------------- 164.3/385.2 MB 2.6 MB/s eta 0:01:27
   ----------------- ---------------------- 164.4/385.2 MB 2.5 MB/s eta 0:01:27
   ----------------- ---------------------- 164.5/385.2 MB 2.6 MB/s eta 0:01:27
   ----------------- ---------------------- 164.7/385.2 MB 2.5 MB/s eta 0:01:27
   ----------------- ---------------------- 164.8/385.2 MB 2.5 MB/s eta 0:01:27
   ----------------- ---------------------- 164.9/385.2 MB 2.6 MB/s eta 0:01:27
   ----------------- ---------------------- 165.1/385.2 MB 2.6 MB/s eta 0:01:27
   ----------------- ---------------------- 165.2/385.2 MB 2.6 MB/s eta 0:01:27
   ----------------- ---------------------- 165.3/385.2 MB 2.6 MB/s eta 0:01:26
   ----------------- ---------------------- 165.5/385.2 MB 2.6 MB/s eta 0:01:26
   ----------------- ---------------------- 165.6/385.2 MB 2.6 MB/s eta 0:01:26
   ----------------- ---------------------- 165.7/385.2 MB 2.6 MB/s eta 0:01:26
   ----------------- ---------------------- 165.9/385.2 MB 2.6 MB/s eta 0:01:26
   ----------------- ---------------------- 166.0/385.2 MB 2.6 MB/s eta 0:01:26
   ----------------- ---------------------- 166.1/385.2 MB 2.6 MB/s eta 0:01:26
   ----------------- ---------------------- 166.3/385.2 MB 2.6 MB/s eta 0:01:26
   ----------------- ---------------------- 166.4/385.2 MB 2.6 MB/s eta 0:01:26
   ----------------- ---------------------- 166.5/385.2 MB 2.6 MB/s eta 0:01:26
   ----------------- ---------------------- 166.7/385.2 MB 2.6 MB/s eta 0:01:26
   ----------------- ---------------------- 166.8/385.2 MB 2.6 MB/s eta 0:01:26
   ----------------- ---------------------- 166.9/385.2 MB 2.6 MB/s eta 0:01:26
   ----------------- ---------------------- 167.0/385.2 MB 2.6 MB/s eta 0:01:26
   ----------------- ---------------------- 167.2/385.2 MB 2.6 MB/s eta 0:01:26
   ----------------- ---------------------- 167.3/385.2 MB 2.5 MB/s eta 0:01:26
   ----------------- ---------------------- 167.4/385.2 MB 2.6 MB/s eta 0:01:26
   ----------------- ---------------------- 167.6/385.2 MB 2.6 MB/s eta 0:01:26
   ----------------- ---------------------- 167.7/385.2 MB 2.6 MB/s eta 0:01:25
   ----------------- ---------------------- 167.8/385.2 MB 2.6 MB/s eta 0:01:24
   ----------------- ---------------------- 168.0/385.2 MB 2.6 MB/s eta 0:01:24
   ----------------- ---------------------- 168.1/385.2 MB 2.6 MB/s eta 0:01:24
   ----------------- ---------------------- 168.2/385.2 MB 2.6 MB/s eta 0:01:24
   ----------------- ---------------------- 168.4/385.2 MB 2.6 MB/s eta 0:01:23
   ----------------- ---------------------- 168.5/385.2 MB 2.6 MB/s eta 0:01:23
   ----------------- ---------------------- 168.6/385.2 MB 2.6 MB/s eta 0:01:23
   ----------------- ---------------------- 168.7/385.2 MB 2.6 MB/s eta 0:01:22
   ----------------- ---------------------- 168.9/385.2 MB 2.6 MB/s eta 0:01:22
   ----------------- ---------------------- 169.0/385.2 MB 2.7 MB/s eta 0:01:22
   ----------------- ---------------------- 169.2/385.2 MB 2.6 MB/s eta 0:01:22
   ----------------- ---------------------- 169.3/385.2 MB 2.7 MB/s eta 0:01:22
   ----------------- ---------------------- 169.4/385.2 MB 2.7 MB/s eta 0:01:22
   ----------------- ---------------------- 169.5/385.2 MB 2.7 MB/s eta 0:01:22
   ----------------- ---------------------- 169.7/385.2 MB 2.7 MB/s eta 0:01:21
   ----------------- ---------------------- 169.8/385.2 MB 2.7 MB/s eta 0:01:22
   ----------------- ---------------------- 169.9/385.2 MB 2.7 MB/s eta 0:01:21
   ----------------- ---------------------- 170.1/385.2 MB 2.7 MB/s eta 0:01:21
   ----------------- ---------------------- 170.2/385.2 MB 2.7 MB/s eta 0:01:21
   ----------------- ---------------------- 170.3/385.2 MB 2.7 MB/s eta 0:01:21
   ----------------- ---------------------- 170.5/385.2 MB 2.7 MB/s eta 0:01:21
   ----------------- ---------------------- 170.6/385.2 MB 2.7 MB/s eta 0:01:21
   ----------------- ---------------------- 170.7/385.2 MB 2.7 MB/s eta 0:01:21
   ----------------- ---------------------- 170.9/385.2 MB 2.7 MB/s eta 0:01:21
   ----------------- ---------------------- 171.0/385.2 MB 2.7 MB/s eta 0:01:21
   ----------------- ---------------------- 171.2/385.2 MB 2.7 MB/s eta 0:01:21
   ----------------- ---------------------- 171.3/385.2 MB 2.7 MB/s eta 0:01:21
   ----------------- ---------------------- 171.4/385.2 MB 2.7 MB/s eta 0:01:20
   ----------------- ---------------------- 171.6/385.2 MB 2.7 MB/s eta 0:01:20
   ----------------- ---------------------- 171.7/385.2 MB 2.7 MB/s eta 0:01:20
   ----------------- ---------------------- 171.8/385.2 MB 2.7 MB/s eta 0:01:20
   ----------------- ---------------------- 172.0/385.2 MB 2.7 MB/s eta 0:01:19
   ----------------- ---------------------- 172.1/385.2 MB 2.7 MB/s eta 0:01:19
   ----------------- ---------------------- 172.2/385.2 MB 2.7 MB/s eta 0:01:19
   ----------------- ---------------------- 172.4/385.2 MB 2.7 MB/s eta 0:01:19
   ----------------- ---------------------- 172.5/385.2 MB 2.7 MB/s eta 0:01:19
   ----------------- ---------------------- 172.6/385.2 MB 2.7 MB/s eta 0:01:18
   ----------------- ---------------------- 172.8/385.2 MB 2.7 MB/s eta 0:01:19
   ----------------- ---------------------- 172.9/385.2 MB 2.7 MB/s eta 0:01:18
   ----------------- ---------------------- 173.0/385.2 MB 2.7 MB/s eta 0:01:18
   ----------------- ---------------------- 173.2/385.2 MB 2.7 MB/s eta 0:01:18
   ----------------- ---------------------- 173.3/385.2 MB 2.8 MB/s eta 0:01:18
   ------------------ --------------------- 173.4/385.2 MB 2.8 MB/s eta 0:01:17
   ------------------ --------------------- 173.6/385.2 MB 2.7 MB/s eta 0:01:18
   ------------------ --------------------- 173.7/385.2 MB 2.8 MB/s eta 0:01:17
   ------------------ --------------------- 173.8/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 174.0/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 174.1/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 174.2/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 174.4/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 174.5/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 174.6/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 174.8/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 174.9/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 175.0/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 175.2/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 175.3/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 175.4/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 175.6/385.2 MB 2.8 MB/s eta 0:01:15
   ------------------ --------------------- 175.7/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 175.8/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 175.9/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 176.0/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 176.2/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 176.3/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 176.4/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 176.5/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 176.7/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 176.8/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 176.9/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 177.1/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 177.2/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 177.3/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 177.4/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 177.5/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 177.6/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 177.8/385.2 MB 2.8 MB/s eta 0:01:16
   ------------------ --------------------- 177.9/385.2 MB 2.7 MB/s eta 0:01:16
   ------------------ --------------------- 178.0/385.2 MB 2.7 MB/s eta 0:01:16
   ------------------ --------------------- 178.1/385.2 MB 2.7 MB/s eta 0:01:16
   ------------------ --------------------- 178.2/385.2 MB 2.7 MB/s eta 0:01:17
   ------------------ --------------------- 178.3/385.2 MB 2.7 MB/s eta 0:01:16
   ------------------ --------------------- 178.5/385.2 MB 2.7 MB/s eta 0:01:16
   ------------------ --------------------- 178.6/385.2 MB 2.7 MB/s eta 0:01:17
   ------------------ --------------------- 178.7/385.2 MB 2.7 MB/s eta 0:01:17
   ------------------ --------------------- 178.8/385.2 MB 2.7 MB/s eta 0:01:17
   ------------------ --------------------- 178.9/385.2 MB 2.7 MB/s eta 0:01:17
   ------------------ --------------------- 179.0/385.2 MB 2.7 MB/s eta 0:01:17
   ------------------ --------------------- 179.2/385.2 MB 2.7 MB/s eta 0:01:17
   ------------------ --------------------- 179.3/385.2 MB 2.7 MB/s eta 0:01:17
   ------------------ --------------------- 179.4/385.2 MB 2.7 MB/s eta 0:01:17
   ------------------ --------------------- 179.5/385.2 MB 2.7 MB/s eta 0:01:17
   ------------------ --------------------- 179.6/385.2 MB 2.7 MB/s eta 0:01:17
   ------------------ --------------------- 179.8/385.2 MB 2.7 MB/s eta 0:01:17
   ------------------ --------------------- 179.9/385.2 MB 2.7 MB/s eta 0:01:17
   ------------------ --------------------- 180.0/385.2 MB 2.7 MB/s eta 0:01:17
   ------------------ --------------------- 180.1/385.2 MB 2.7 MB/s eta 0:01:17
   ------------------ --------------------- 180.2/385.2 MB 2.7 MB/s eta 0:01:17
   ------------------ --------------------- 180.4/385.2 MB 2.7 MB/s eta 0:01:17
   ------------------ --------------------- 180.5/385.2 MB 2.7 MB/s eta 0:01:17
   ------------------ --------------------- 180.6/385.2 MB 2.7 MB/s eta 0:01:17
   ------------------ --------------------- 180.7/385.2 MB 2.7 MB/s eta 0:01:18
   ------------------ --------------------- 180.8/385.2 MB 2.7 MB/s eta 0:01:17
   ------------------ --------------------- 181.0/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------ --------------------- 181.1/385.2 MB 2.7 MB/s eta 0:01:17
   ------------------ --------------------- 181.2/385.2 MB 2.7 MB/s eta 0:01:17
   ------------------ --------------------- 181.3/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------ --------------------- 181.4/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------ --------------------- 181.5/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------ --------------------- 181.7/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------ --------------------- 181.8/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------ --------------------- 181.9/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------ --------------------- 182.0/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------ --------------------- 182.2/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------ --------------------- 182.3/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------ --------------------- 182.4/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------ --------------------- 182.5/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------ --------------------- 182.7/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------ --------------------- 182.8/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------ --------------------- 182.9/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------- -------------------- 183.1/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------- -------------------- 183.2/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------- -------------------- 183.3/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------- -------------------- 183.4/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------- -------------------- 183.6/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------- -------------------- 183.7/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------- -------------------- 183.8/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------- -------------------- 183.9/385.2 MB 2.6 MB/s eta 0:01:19
   ------------------- -------------------- 184.0/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------- -------------------- 184.1/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------- -------------------- 184.3/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------- -------------------- 184.4/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------- -------------------- 184.5/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------- -------------------- 184.6/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------- -------------------- 184.8/385.2 MB 2.6 MB/s eta 0:01:19
   ------------------- -------------------- 184.9/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------- -------------------- 185.0/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------- -------------------- 185.1/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------- -------------------- 185.3/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------- -------------------- 185.4/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------- -------------------- 185.5/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------- -------------------- 185.7/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------- -------------------- 185.8/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------- -------------------- 186.0/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------- -------------------- 186.1/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------- -------------------- 186.2/385.2 MB 2.6 MB/s eta 0:01:17
   ------------------- -------------------- 186.4/385.2 MB 2.6 MB/s eta 0:01:18
   ------------------- -------------------- 186.5/385.2 MB 2.6 MB/s eta 0:01:17
   ------------------- -------------------- 186.6/385.2 MB 2.6 MB/s eta 0:01:17
   ------------------- -------------------- 186.8/385.2 MB 2.6 MB/s eta 0:01:17
   ------------------- -------------------- 186.9/385.2 MB 2.6 MB/s eta 0:01:17
   ------------------- -------------------- 187.0/385.2 MB 2.6 MB/s eta 0:01:17
   ------------------- -------------------- 187.2/385.2 MB 2.6 MB/s eta 0:01:17
   ------------------- -------------------- 187.3/385.2 MB 2.6 MB/s eta 0:01:17
   ------------------- -------------------- 187.4/385.2 MB 2.6 MB/s eta 0:01:17
   ------------------- -------------------- 187.6/385.2 MB 2.6 MB/s eta 0:01:16
   ------------------- -------------------- 187.7/385.2 MB 2.6 MB/s eta 0:01:17
   ------------------- -------------------- 187.8/385.2 MB 2.6 MB/s eta 0:01:16
   ------------------- -------------------- 187.9/385.2 MB 2.6 MB/s eta 0:01:16
   ------------------- -------------------- 188.0/385.2 MB 2.6 MB/s eta 0:01:16
   ------------------- -------------------- 188.2/385.2 MB 2.6 MB/s eta 0:01:16
   ------------------- -------------------- 188.3/385.2 MB 2.6 MB/s eta 0:01:16
   ------------------- -------------------- 188.4/385.2 MB 2.6 MB/s eta 0:01:15
   ------------------- -------------------- 188.5/385.2 MB 2.6 MB/s eta 0:01:16
   ------------------- -------------------- 188.7/385.2 MB 2.6 MB/s eta 0:01:16
   ------------------- -------------------- 188.8/385.2 MB 2.6 MB/s eta 0:01:15
   ------------------- -------------------- 188.9/385.2 MB 2.6 MB/s eta 0:01:15
   ------------------- -------------------- 189.1/385.2 MB 2.6 MB/s eta 0:01:15
   ------------------- -------------------- 189.2/385.2 MB 2.6 MB/s eta 0:01:15
   ------------------- -------------------- 189.3/385.2 MB 2.6 MB/s eta 0:01:15
   ------------------- -------------------- 189.4/385.2 MB 2.6 MB/s eta 0:01:15
   ------------------- -------------------- 189.5/385.2 MB 2.6 MB/s eta 0:01:15
   ------------------- -------------------- 189.7/385.2 MB 2.6 MB/s eta 0:01:15
   ------------------- -------------------- 189.8/385.2 MB 2.6 MB/s eta 0:01:14
   ------------------- -------------------- 189.9/385.2 MB 2.6 MB/s eta 0:01:15
   ------------------- -------------------- 190.0/385.2 MB 2.6 MB/s eta 0:01:15
   ------------------- -------------------- 190.1/385.2 MB 2.6 MB/s eta 0:01:14
   ------------------- -------------------- 190.3/385.2 MB 2.6 MB/s eta 0:01:15
   ------------------- -------------------- 190.4/385.2 MB 2.6 MB/s eta 0:01:14
   ------------------- -------------------- 190.6/385.2 MB 2.7 MB/s eta 0:01:14
   ------------------- -------------------- 190.7/385.2 MB 2.7 MB/s eta 0:01:14
   ------------------- -------------------- 190.8/385.2 MB 2.7 MB/s eta 0:01:14
   ------------------- -------------------- 190.9/385.2 MB 2.7 MB/s eta 0:01:14
   ------------------- -------------------- 191.0/385.2 MB 2.7 MB/s eta 0:01:14
   ------------------- -------------------- 191.2/385.2 MB 2.6 MB/s eta 0:01:14
   ------------------- -------------------- 191.3/385.2 MB 2.7 MB/s eta 0:01:14
   ------------------- -------------------- 191.4/385.2 MB 2.6 MB/s eta 0:01:14
   ------------------- -------------------- 191.5/385.2 MB 2.7 MB/s eta 0:01:14
   ------------------- -------------------- 191.7/385.2 MB 2.7 MB/s eta 0:01:13
   ------------------- -------------------- 191.8/385.2 MB 2.7 MB/s eta 0:01:13
   ------------------- -------------------- 191.9/385.2 MB 2.7 MB/s eta 0:01:13
   ------------------- -------------------- 192.1/385.2 MB 2.7 MB/s eta 0:01:13
   ------------------- -------------------- 192.2/385.2 MB 2.7 MB/s eta 0:01:13
   ------------------- -------------------- 192.3/385.2 MB 2.7 MB/s eta 0:01:13
   ------------------- -------------------- 192.4/385.2 MB 2.7 MB/s eta 0:01:13
   ------------------- -------------------- 192.6/385.2 MB 2.7 MB/s eta 0:01:13
   -------------------- ------------------- 192.7/385.2 MB 2.7 MB/s eta 0:01:13
   -------------------- ------------------- 192.8/385.2 MB 2.7 MB/s eta 0:01:12
   -------------------- ------------------- 193.0/385.2 MB 2.7 MB/s eta 0:01:13
   -------------------- ------------------- 193.1/385.2 MB 2.7 MB/s eta 0:01:12
   -------------------- ------------------- 193.2/385.2 MB 2.7 MB/s eta 0:01:12
   -------------------- ------------------- 193.4/385.2 MB 2.7 MB/s eta 0:01:12
   -------------------- ------------------- 193.5/385.2 MB 2.7 MB/s eta 0:01:12
   -------------------- ------------------- 193.6/385.2 MB 2.7 MB/s eta 0:01:12
   -------------------- ------------------- 193.7/385.2 MB 2.7 MB/s eta 0:01:12
   -------------------- ------------------- 193.9/385.2 MB 2.7 MB/s eta 0:01:12
   -------------------- ------------------- 194.0/385.2 MB 2.7 MB/s eta 0:01:12
   -------------------- ------------------- 194.1/385.2 MB 2.7 MB/s eta 0:01:12
   -------------------- ------------------- 194.2/385.2 MB 2.7 MB/s eta 0:01:12
   -------------------- ------------------- 194.4/385.2 MB 2.7 MB/s eta 0:01:12
   -------------------- ------------------- 194.5/385.2 MB 2.7 MB/s eta 0:01:12
   -------------------- ------------------- 194.6/385.2 MB 2.7 MB/s eta 0:01:12
   -------------------- ------------------- 194.7/385.2 MB 2.7 MB/s eta 0:01:11
   -------------------- ------------------- 194.9/385.2 MB 2.7 MB/s eta 0:01:11
   -------------------- ------------------- 195.0/385.2 MB 2.7 MB/s eta 0:01:11
   -------------------- ------------------- 195.1/385.2 MB 2.7 MB/s eta 0:01:11
   -------------------- ------------------- 195.3/385.2 MB 2.7 MB/s eta 0:01:11
   -------------------- ------------------- 195.4/385.2 MB 2.7 MB/s eta 0:01:11
   -------------------- ------------------- 195.5/385.2 MB 2.7 MB/s eta 0:01:11
   -------------------- ------------------- 195.7/385.2 MB 2.7 MB/s eta 0:01:11
   -------------------- ------------------- 195.8/385.2 MB 2.7 MB/s eta 0:01:11
   -------------------- ------------------- 195.9/385.2 MB 2.7 MB/s eta 0:01:11
   -------------------- ------------------- 196.0/385.2 MB 2.7 MB/s eta 0:01:10
   -------------------- ------------------- 196.2/385.2 MB 2.7 MB/s eta 0:01:11
   -------------------- ------------------- 196.3/385.2 MB 2.7 MB/s eta 0:01:11
   -------------------- ------------------- 196.4/385.2 MB 2.7 MB/s eta 0:01:11
   -------------------- ------------------- 196.6/385.2 MB 2.7 MB/s eta 0:01:11
   -------------------- ------------------- 196.7/385.2 MB 2.7 MB/s eta 0:01:10
   -------------------- ------------------- 196.8/385.2 MB 2.7 MB/s eta 0:01:11
   -------------------- ------------------- 196.9/385.2 MB 2.7 MB/s eta 0:01:10
   -------------------- ------------------- 197.1/385.2 MB 2.7 MB/s eta 0:01:11
   -------------------- ------------------- 197.2/385.2 MB 2.7 MB/s eta 0:01:11
   -------------------- ------------------- 197.3/385.2 MB 2.7 MB/s eta 0:01:11
   -------------------- ------------------- 197.4/385.2 MB 2.7 MB/s eta 0:01:11
   -------------------- ------------------- 197.6/385.2 MB 2.7 MB/s eta 0:01:11
   -------------------- ------------------- 197.7/385.2 MB 2.7 MB/s eta 0:01:11
   -------------------- ------------------- 197.8/385.2 MB 2.7 MB/s eta 0:01:11
   -------------------- ------------------- 197.9/385.2 MB 2.7 MB/s eta 0:01:11
   -------------------- ------------------- 198.1/385.2 MB 2.7 MB/s eta 0:01:11
   -------------------- ------------------- 198.2/385.2 MB 2.7 MB/s eta 0:01:10
   -------------------- ------------------- 198.3/385.2 MB 2.7 MB/s eta 0:01:10
   -------------------- ------------------- 198.5/385.2 MB 2.7 MB/s eta 0:01:10
   -------------------- ------------------- 198.6/385.2 MB 2.7 MB/s eta 0:01:10
   -------------------- ------------------- 198.7/385.2 MB 2.7 MB/s eta 0:01:10
   -------------------- ------------------- 198.8/385.2 MB 2.7 MB/s eta 0:01:10
   -------------------- ------------------- 198.9/385.2 MB 2.7 MB/s eta 0:01:10
   -------------------- ------------------- 199.0/385.2 MB 2.7 MB/s eta 0:01:10
   -------------------- ------------------- 199.0/385.2 MB 2.7 MB/s eta 0:01:10
   -------------------- ------------------- 199.1/385.2 MB 2.6 MB/s eta 0:01:12
   -------------------- ------------------- 199.2/385.2 MB 2.6 MB/s eta 0:01:12
   -------------------- ------------------- 199.2/385.2 MB 2.6 MB/s eta 0:01:12
   -------------------- ------------------- 199.2/385.2 MB 2.6 MB/s eta 0:01:12
   -------------------- ------------------- 199.2/385.2 MB 2.6 MB/s eta 0:01:12
   -------------------- ------------------- 199.2/385.2 MB 2.6 MB/s eta 0:01:12
   -------------------- ------------------- 199.2/385.2 MB 2.6 MB/s eta 0:01:12
   -------------------- ------------------- 199.4/385.2 MB 2.5 MB/s eta 0:01:16
   -------------------- ------------------- 199.7/385.2 MB 2.5 MB/s eta 0:01:15
   -------------------- ------------------- 199.7/385.2 MB 2.5 MB/s eta 0:01:15
   -------------------- ------------------- 199.8/385.2 MB 2.5 MB/s eta 0:01:15
   -------------------- ------------------- 199.9/385.2 MB 2.5 MB/s eta 0:01:15
   -------------------- ------------------- 200.1/385.2 MB 2.5 MB/s eta 0:01:15
   -------------------- ------------------- 200.2/385.2 MB 2.5 MB/s eta 0:01:15
   -------------------- ------------------- 200.3/385.2 MB 2.5 MB/s eta 0:01:14
   -------------------- ------------------- 200.5/385.2 MB 2.5 MB/s eta 0:01:15
   -------------------- ------------------- 200.6/385.2 MB 2.5 MB/s eta 0:01:14
   -------------------- ------------------- 200.7/385.2 MB 2.5 MB/s eta 0:01:14
   -------------------- ------------------- 200.9/385.2 MB 2.5 MB/s eta 0:01:14
   -------------------- ------------------- 201.0/385.2 MB 2.5 MB/s eta 0:01:14
   -------------------- ------------------- 201.1/385.2 MB 2.5 MB/s eta 0:01:14
   -------------------- ------------------- 201.3/385.2 MB 2.5 MB/s eta 0:01:14
   -------------------- ------------------- 201.4/385.2 MB 2.5 MB/s eta 0:01:13
   -------------------- ------------------- 201.5/385.2 MB 2.5 MB/s eta 0:01:13
   -------------------- ------------------- 201.7/385.2 MB 2.5 MB/s eta 0:01:13
   -------------------- ------------------- 201.8/385.2 MB 2.5 MB/s eta 0:01:13
   -------------------- ------------------- 202.0/385.2 MB 2.5 MB/s eta 0:01:13
   -------------------- ------------------- 202.1/385.2 MB 2.5 MB/s eta 0:01:13
   --------------------- ------------------ 202.2/385.2 MB 2.5 MB/s eta 0:01:13
   --------------------- ------------------ 202.3/385.2 MB 2.5 MB/s eta 0:01:13
   --------------------- ------------------ 202.5/385.2 MB 2.5 MB/s eta 0:01:13
   --------------------- ------------------ 202.6/385.2 MB 2.5 MB/s eta 0:01:13
   --------------------- ------------------ 202.7/385.2 MB 2.5 MB/s eta 0:01:13
   --------------------- ------------------ 202.9/385.2 MB 2.5 MB/s eta 0:01:13
   --------------------- ------------------ 203.0/385.2 MB 2.5 MB/s eta 0:01:13
   --------------------- ------------------ 203.1/385.2 MB 2.5 MB/s eta 0:01:13
   --------------------- ------------------ 203.3/385.2 MB 2.5 MB/s eta 0:01:12
   --------------------- ------------------ 203.4/385.2 MB 2.5 MB/s eta 0:01:12
   --------------------- ------------------ 203.5/385.2 MB 2.5 MB/s eta 0:01:13
   --------------------- ------------------ 203.7/385.2 MB 2.5 MB/s eta 0:01:12
   --------------------- ------------------ 203.8/385.2 MB 2.5 MB/s eta 0:01:13
   --------------------- ------------------ 203.9/385.2 MB 2.5 MB/s eta 0:01:12
   --------------------- ------------------ 204.1/385.2 MB 2.5 MB/s eta 0:01:12
   --------------------- ------------------ 204.2/385.2 MB 2.5 MB/s eta 0:01:12
   --------------------- ------------------ 204.3/385.2 MB 2.5 MB/s eta 0:01:12
   --------------------- ------------------ 204.4/385.2 MB 2.5 MB/s eta 0:01:12
   --------------------- ------------------ 204.6/385.2 MB 2.5 MB/s eta 0:01:12
   --------------------- ------------------ 204.7/385.2 MB 2.5 MB/s eta 0:01:12
   --------------------- ------------------ 204.9/385.2 MB 2.5 MB/s eta 0:01:12
   --------------------- ------------------ 205.0/385.2 MB 2.5 MB/s eta 0:01:11
   --------------------- ------------------ 205.1/385.2 MB 2.5 MB/s eta 0:01:12
   --------------------- ------------------ 205.2/385.2 MB 2.5 MB/s eta 0:01:11
   --------------------- ------------------ 205.4/385.2 MB 2.5 MB/s eta 0:01:11
   --------------------- ------------------ 205.5/385.2 MB 2.5 MB/s eta 0:01:12
   --------------------- ------------------ 205.6/385.2 MB 2.5 MB/s eta 0:01:12
   --------------------- ------------------ 205.7/385.2 MB 2.5 MB/s eta 0:01:12
   --------------------- ------------------ 205.9/385.2 MB 2.5 MB/s eta 0:01:11
   --------------------- ------------------ 206.0/385.2 MB 2.5 MB/s eta 0:01:12
   --------------------- ------------------ 206.1/385.2 MB 2.5 MB/s eta 0:01:12
   --------------------- ------------------ 206.2/385.2 MB 2.5 MB/s eta 0:01:12
   --------------------- ------------------ 206.3/385.2 MB 2.5 MB/s eta 0:01:12
   --------------------- ------------------ 206.4/385.2 MB 2.5 MB/s eta 0:01:12
   --------------------- ------------------ 206.5/385.2 MB 2.5 MB/s eta 0:01:12
   --------------------- ------------------ 206.6/385.2 MB 2.5 MB/s eta 0:01:12
   --------------------- ------------------ 206.8/385.2 MB 2.5 MB/s eta 0:01:12
   --------------------- ------------------ 206.9/385.2 MB 2.5 MB/s eta 0:01:12
   --------------------- ------------------ 207.0/385.2 MB 2.5 MB/s eta 0:01:12
   --------------------- ------------------ 207.2/385.2 MB 2.5 MB/s eta 0:01:12
   --------------------- ------------------ 207.3/385.2 MB 2.5 MB/s eta 0:01:12
   --------------------- ------------------ 207.4/385.2 MB 2.5 MB/s eta 0:01:12
   --------------------- ------------------ 207.6/385.2 MB 2.5 MB/s eta 0:01:11
   --------------------- ------------------ 207.7/385.2 MB 2.5 MB/s eta 0:01:11
   --------------------- ------------------ 207.8/385.2 MB 2.5 MB/s eta 0:01:11
   --------------------- ------------------ 208.0/385.2 MB 2.5 MB/s eta 0:01:11
   --------------------- ------------------ 208.1/385.2 MB 2.5 MB/s eta 0:01:11
   --------------------- ------------------ 208.2/385.2 MB 2.5 MB/s eta 0:01:11
   --------------------- ------------------ 208.4/385.2 MB 2.5 MB/s eta 0:01:11
   --------------------- ------------------ 208.5/385.2 MB 2.5 MB/s eta 0:01:11
   --------------------- ------------------ 208.6/385.2 MB 2.5 MB/s eta 0:01:11
   --------------------- ------------------ 208.8/385.2 MB 2.5 MB/s eta 0:01:11
   --------------------- ------------------ 208.9/385.2 MB 2.5 MB/s eta 0:01:11
   --------------------- ------------------ 209.0/385.2 MB 2.5 MB/s eta 0:01:11
   --------------------- ------------------ 209.2/385.2 MB 2.5 MB/s eta 0:01:10
   --------------------- ------------------ 209.3/385.2 MB 2.6 MB/s eta 0:01:08
   --------------------- ------------------ 209.4/385.2 MB 2.6 MB/s eta 0:01:08
   --------------------- ------------------ 209.6/385.2 MB 2.8 MB/s eta 0:01:04
   --------------------- ------------------ 209.7/385.2 MB 2.7 MB/s eta 0:01:05
   --------------------- ------------------ 209.8/385.2 MB 2.7 MB/s eta 0:01:05
   --------------------- ------------------ 210.0/385.2 MB 2.7 MB/s eta 0:01:05
   --------------------- ------------------ 210.1/385.2 MB 2.7 MB/s eta 0:01:05
   --------------------- ------------------ 210.2/385.2 MB 2.7 MB/s eta 0:01:05
   --------------------- ------------------ 210.3/385.2 MB 2.7 MB/s eta 0:01:05
   --------------------- ------------------ 210.4/385.2 MB 2.7 MB/s eta 0:01:05
   --------------------- ------------------ 210.5/385.2 MB 2.7 MB/s eta 0:01:05
   --------------------- ------------------ 210.5/385.2 MB 2.7 MB/s eta 0:01:06
   --------------------- ------------------ 210.6/385.2 MB 2.7 MB/s eta 0:01:06
   --------------------- ------------------ 210.7/385.2 MB 2.7 MB/s eta 0:01:06
   --------------------- ------------------ 210.7/385.2 MB 2.6 MB/s eta 0:01:07
   --------------------- ------------------ 210.8/385.2 MB 2.6 MB/s eta 0:01:07
   --------------------- ------------------ 211.0/385.2 MB 2.6 MB/s eta 0:01:07
   --------------------- ------------------ 211.1/385.2 MB 2.6 MB/s eta 0:01:07
   --------------------- ------------------ 211.2/385.2 MB 2.6 MB/s eta 0:01:07
   --------------------- ------------------ 211.3/385.2 MB 2.6 MB/s eta 0:01:07
   --------------------- ------------------ 211.5/385.2 MB 2.6 MB/s eta 0:01:07
   --------------------- ------------------ 211.6/385.2 MB 2.6 MB/s eta 0:01:07
   --------------------- ------------------ 211.7/385.2 MB 2.6 MB/s eta 0:01:07
   ---------------------- ----------------- 211.8/385.2 MB 2.6 MB/s eta 0:01:07
   ---------------------- ----------------- 212.0/385.2 MB 2.6 MB/s eta 0:01:07
   ---------------------- ----------------- 212.1/385.2 MB 2.6 MB/s eta 0:01:07
   ---------------------- ----------------- 212.3/385.2 MB 2.6 MB/s eta 0:01:07
   ---------------------- ----------------- 212.4/385.2 MB 2.6 MB/s eta 0:01:07
   ---------------------- ----------------- 212.5/385.2 MB 2.6 MB/s eta 0:01:07
   ---------------------- ----------------- 212.6/385.2 MB 2.6 MB/s eta 0:01:07
   ---------------------- ----------------- 212.7/385.2 MB 2.6 MB/s eta 0:01:07
   ---------------------- ----------------- 212.9/385.2 MB 2.6 MB/s eta 0:01:07
   ---------------------- ----------------- 213.0/385.2 MB 2.6 MB/s eta 0:01:07
   ---------------------- ----------------- 213.1/385.2 MB 2.6 MB/s eta 0:01:07
   ---------------------- ----------------- 213.2/385.2 MB 2.6 MB/s eta 0:01:07
   ---------------------- ----------------- 213.4/385.2 MB 2.6 MB/s eta 0:01:07
   ---------------------- ----------------- 213.5/385.2 MB 2.6 MB/s eta 0:01:07
   ---------------------- ----------------- 213.6/385.2 MB 2.6 MB/s eta 0:01:07
   ---------------------- ----------------- 213.8/385.2 MB 2.6 MB/s eta 0:01:07
   ---------------------- ----------------- 213.9/385.2 MB 2.6 MB/s eta 0:01:07
   ---------------------- ----------------- 214.0/385.2 MB 2.6 MB/s eta 0:01:07
   ---------------------- ----------------- 214.1/385.2 MB 2.6 MB/s eta 0:01:07
   ---------------------- ----------------- 214.3/385.2 MB 2.6 MB/s eta 0:01:07
   ---------------------- ----------------- 214.4/385.2 MB 2.6 MB/s eta 0:01:06
   ---------------------- ----------------- 214.5/385.2 MB 2.6 MB/s eta 0:01:06
   ---------------------- ----------------- 214.7/385.2 MB 2.6 MB/s eta 0:01:06
   ---------------------- ----------------- 214.8/385.2 MB 2.6 MB/s eta 0:01:06
   ---------------------- ----------------- 214.9/385.2 MB 2.6 MB/s eta 0:01:06
   ---------------------- ----------------- 215.1/385.2 MB 2.6 MB/s eta 0:01:06
   ---------------------- ----------------- 215.2/385.2 MB 2.6 MB/s eta 0:01:06
   ---------------------- ----------------- 215.3/385.2 MB 2.6 MB/s eta 0:01:06
   ---------------------- ----------------- 215.4/385.2 MB 2.6 MB/s eta 0:01:06
   ---------------------- ----------------- 215.6/385.2 MB 2.6 MB/s eta 0:01:06
   ---------------------- ----------------- 215.7/385.2 MB 2.6 MB/s eta 0:01:06
   ---------------------- ----------------- 215.8/385.2 MB 2.6 MB/s eta 0:01:06
   ---------------------- ----------------- 216.0/385.2 MB 2.6 MB/s eta 0:01:06
   ---------------------- ----------------- 216.2/385.2 MB 2.6 MB/s eta 0:01:06
   ---------------------- ----------------- 216.3/385.2 MB 2.6 MB/s eta 0:01:05
   ---------------------- ----------------- 216.5/385.2 MB 2.6 MB/s eta 0:01:05
   ---------------------- ----------------- 216.6/385.2 MB 2.6 MB/s eta 0:01:05
   ---------------------- ----------------- 216.7/385.2 MB 2.6 MB/s eta 0:01:05
   ---------------------- ----------------- 216.8/385.2 MB 2.6 MB/s eta 0:01:05
   ---------------------- ----------------- 216.9/385.2 MB 2.6 MB/s eta 0:01:05
   ---------------------- ----------------- 217.1/385.2 MB 2.6 MB/s eta 0:01:05
   ---------------------- ----------------- 217.2/385.2 MB 2.6 MB/s eta 0:01:05
   ---------------------- ----------------- 217.3/385.2 MB 2.6 MB/s eta 0:01:05
   ---------------------- ----------------- 217.4/385.2 MB 2.6 MB/s eta 0:01:05
   ---------------------- ----------------- 217.5/385.2 MB 2.6 MB/s eta 0:01:05
   ---------------------- ----------------- 217.7/385.2 MB 2.6 MB/s eta 0:01:05
   ---------------------- ----------------- 217.8/385.2 MB 2.6 MB/s eta 0:01:05
   ---------------------- ----------------- 217.9/385.2 MB 2.6 MB/s eta 0:01:05
   ---------------------- ----------------- 218.0/385.2 MB 2.6 MB/s eta 0:01:05
   ---------------------- ----------------- 218.1/385.2 MB 2.6 MB/s eta 0:01:05
   ---------------------- ----------------- 218.3/385.2 MB 2.6 MB/s eta 0:01:05
   ---------------------- ----------------- 218.4/385.2 MB 2.6 MB/s eta 0:01:05
   ---------------------- ----------------- 218.5/385.2 MB 2.6 MB/s eta 0:01:05
   ---------------------- ----------------- 218.7/385.2 MB 2.6 MB/s eta 0:01:06
   ---------------------- ----------------- 218.8/385.2 MB 2.6 MB/s eta 0:01:06
   ---------------------- ----------------- 219.0/385.2 MB 2.5 MB/s eta 0:01:06
   ---------------------- ----------------- 219.1/385.2 MB 2.5 MB/s eta 0:01:06
   ---------------------- ----------------- 219.2/385.2 MB 2.5 MB/s eta 0:01:06
   ---------------------- ----------------- 219.3/385.2 MB 2.5 MB/s eta 0:01:06
   ---------------------- ----------------- 219.4/385.2 MB 2.5 MB/s eta 0:01:06
   ---------------------- ----------------- 219.5/385.2 MB 2.5 MB/s eta 0:01:06
   ---------------------- ----------------- 219.5/385.2 MB 2.5 MB/s eta 0:01:06
   ---------------------- ----------------- 219.7/385.2 MB 2.5 MB/s eta 0:01:06
   ---------------------- ----------------- 219.8/385.2 MB 2.5 MB/s eta 0:01:06
   ---------------------- ----------------- 219.9/385.2 MB 2.5 MB/s eta 0:01:06
   ---------------------- ----------------- 220.0/385.2 MB 2.5 MB/s eta 0:01:06
   ---------------------- ----------------- 220.1/385.2 MB 2.5 MB/s eta 0:01:06
   ---------------------- ----------------- 220.3/385.2 MB 2.5 MB/s eta 0:01:06
   ---------------------- ----------------- 220.4/385.2 MB 2.5 MB/s eta 0:01:06
   ---------------------- ----------------- 220.5/385.2 MB 2.5 MB/s eta 0:01:06
   ---------------------- ----------------- 220.6/385.2 MB 2.5 MB/s eta 0:01:06
   ---------------------- ----------------- 220.7/385.2 MB 2.5 MB/s eta 0:01:06
   ---------------------- ----------------- 220.8/385.2 MB 2.5 MB/s eta 0:01:05
   ---------------------- ----------------- 220.9/385.2 MB 2.6 MB/s eta 0:01:05
   ---------------------- ----------------- 221.0/385.2 MB 2.6 MB/s eta 0:01:04
   ---------------------- ----------------- 221.1/385.2 MB 2.6 MB/s eta 0:01:04
   ---------------------- ----------------- 221.2/385.2 MB 2.6 MB/s eta 0:01:04
   ---------------------- ----------------- 221.3/385.2 MB 2.6 MB/s eta 0:01:04
   ---------------------- ----------------- 221.5/385.2 MB 2.6 MB/s eta 0:01:04
   ----------------------- ---------------- 221.6/385.2 MB 2.6 MB/s eta 0:01:04
   ----------------------- ---------------- 221.7/385.2 MB 2.6 MB/s eta 0:01:04
   ----------------------- ---------------- 221.8/385.2 MB 2.6 MB/s eta 0:01:04
   ----------------------- ---------------- 221.9/385.2 MB 2.6 MB/s eta 0:01:04
   ----------------------- ---------------- 222.0/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 222.1/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 222.3/385.2 MB 2.5 MB/s eta 0:01:04
   ----------------------- ---------------- 222.4/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 222.5/385.2 MB 2.5 MB/s eta 0:01:04
   ----------------------- ---------------- 222.6/385.2 MB 2.5 MB/s eta 0:01:04
   ----------------------- ---------------- 222.7/385.2 MB 2.5 MB/s eta 0:01:04
   ----------------------- ---------------- 222.9/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 223.0/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 223.1/385.2 MB 2.5 MB/s eta 0:01:04
   ----------------------- ---------------- 223.2/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 223.4/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 223.5/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 223.6/385.2 MB 2.5 MB/s eta 0:01:04
   ----------------------- ---------------- 223.7/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 223.9/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 224.0/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 224.1/385.2 MB 2.5 MB/s eta 0:01:04
   ----------------------- ---------------- 224.2/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 224.3/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 224.4/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 224.6/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 224.7/385.2 MB 2.5 MB/s eta 0:01:04
   ----------------------- ---------------- 224.8/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 225.0/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 225.1/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 225.2/385.2 MB 2.5 MB/s eta 0:01:04
   ----------------------- ---------------- 225.3/385.2 MB 2.5 MB/s eta 0:01:04
   ----------------------- ---------------- 225.4/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 225.5/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 225.6/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 225.7/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 225.8/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 226.0/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 226.1/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 226.2/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 226.3/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 226.5/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 226.6/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 226.7/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 226.8/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 226.9/385.2 MB 2.4 MB/s eta 0:01:05
   ----------------------- ---------------- 227.0/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 227.1/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 227.2/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 227.4/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 227.5/385.2 MB 2.5 MB/s eta 0:01:05
   ----------------------- ---------------- 227.7/385.2 MB 2.5 MB/s eta 0:01:04
   ----------------------- ---------------- 227.8/385.2 MB 2.5 MB/s eta 0:01:04
   ----------------------- ---------------- 227.9/385.2 MB 2.5 MB/s eta 0:01:04
   ----------------------- ---------------- 228.0/385.2 MB 2.5 MB/s eta 0:01:04
   ----------------------- ---------------- 228.2/385.2 MB 2.5 MB/s eta 0:01:04
   ----------------------- ---------------- 228.3/385.2 MB 2.5 MB/s eta 0:01:04
   ----------------------- ---------------- 228.5/385.2 MB 2.5 MB/s eta 0:01:04
   ----------------------- ---------------- 228.6/385.2 MB 2.5 MB/s eta 0:01:04
   ----------------------- ---------------- 228.7/385.2 MB 2.5 MB/s eta 0:01:03
   ----------------------- ---------------- 228.8/385.2 MB 2.5 MB/s eta 0:01:03
   ----------------------- ---------------- 229.0/385.2 MB 2.5 MB/s eta 0:01:03
   ----------------------- ---------------- 229.1/385.2 MB 2.5 MB/s eta 0:01:03
   ----------------------- ---------------- 229.2/385.2 MB 2.5 MB/s eta 0:01:03
   ----------------------- ---------------- 229.3/385.2 MB 2.5 MB/s eta 0:01:03
   ----------------------- ---------------- 229.5/385.2 MB 2.5 MB/s eta 0:01:03
   ----------------------- ---------------- 229.6/385.2 MB 2.5 MB/s eta 0:01:03
   ----------------------- ---------------- 229.7/385.2 MB 2.5 MB/s eta 0:01:02
   ----------------------- ---------------- 229.8/385.2 MB 2.5 MB/s eta 0:01:03
   ----------------------- ---------------- 229.9/385.2 MB 2.5 MB/s eta 0:01:03
   ----------------------- ---------------- 230.0/385.2 MB 2.5 MB/s eta 0:01:03
   ----------------------- ---------------- 230.1/385.2 MB 2.5 MB/s eta 0:01:03
   ----------------------- ---------------- 230.3/385.2 MB 2.5 MB/s eta 0:01:02
   ----------------------- ---------------- 230.4/385.2 MB 2.5 MB/s eta 0:01:02
   ----------------------- ---------------- 230.5/385.2 MB 2.5 MB/s eta 0:01:02
   ----------------------- ---------------- 230.7/385.2 MB 2.5 MB/s eta 0:01:02
   ----------------------- ---------------- 230.8/385.2 MB 2.5 MB/s eta 0:01:02
   ----------------------- ---------------- 230.9/385.2 MB 2.5 MB/s eta 0:01:02
   ----------------------- ---------------- 231.0/385.2 MB 2.5 MB/s eta 0:01:02
   ------------------------ --------------- 231.1/385.2 MB 2.5 MB/s eta 0:01:02
   ------------------------ --------------- 231.3/385.2 MB 2.5 MB/s eta 0:01:02
   ------------------------ --------------- 231.4/385.2 MB 2.5 MB/s eta 0:01:02
   ------------------------ --------------- 231.5/385.2 MB 2.5 MB/s eta 0:01:02
   ------------------------ --------------- 231.6/385.2 MB 2.5 MB/s eta 0:01:01
   ------------------------ --------------- 231.7/385.2 MB 2.5 MB/s eta 0:01:01
   ------------------------ --------------- 231.8/385.2 MB 2.5 MB/s eta 0:01:02
   ------------------------ --------------- 231.9/385.2 MB 2.5 MB/s eta 0:01:01
   ------------------------ --------------- 232.1/385.2 MB 2.5 MB/s eta 0:01:01
   ------------------------ --------------- 232.2/385.2 MB 2.5 MB/s eta 0:01:01
   ------------------------ --------------- 232.3/385.2 MB 2.5 MB/s eta 0:01:01
   ------------------------ --------------- 232.4/385.2 MB 2.5 MB/s eta 0:01:01
   ------------------------ --------------- 232.6/385.2 MB 2.5 MB/s eta 0:01:01
   ------------------------ --------------- 232.7/385.2 MB 2.5 MB/s eta 0:01:01
   ------------------------ --------------- 232.8/385.2 MB 2.5 MB/s eta 0:01:01
   ------------------------ --------------- 232.9/385.2 MB 2.5 MB/s eta 0:01:01
   ------------------------ --------------- 233.0/385.2 MB 2.5 MB/s eta 0:01:01
   ------------------------ --------------- 233.2/385.2 MB 2.5 MB/s eta 0:01:01
   ------------------------ --------------- 233.3/385.2 MB 2.5 MB/s eta 0:01:01
   ------------------------ --------------- 233.4/385.2 MB 2.5 MB/s eta 0:01:01
   ------------------------ --------------- 233.6/385.2 MB 2.5 MB/s eta 0:01:00
   ------------------------ --------------- 233.7/385.2 MB 2.5 MB/s eta 0:01:00
   ------------------------ --------------- 233.8/385.2 MB 2.5 MB/s eta 0:01:00
   ------------------------ --------------- 234.0/385.2 MB 2.6 MB/s eta 0:01:00
   ------------------------ --------------- 234.1/385.2 MB 2.5 MB/s eta 0:01:00
   ------------------------ --------------- 234.2/385.2 MB 2.5 MB/s eta 0:01:00
   ------------------------ --------------- 234.3/385.2 MB 2.5 MB/s eta 0:01:00
   ------------------------ --------------- 234.4/385.2 MB 2.6 MB/s eta 0:00:59
   ------------------------ --------------- 234.6/385.2 MB 2.5 MB/s eta 0:01:00
   ------------------------ --------------- 234.7/385.2 MB 2.5 MB/s eta 0:01:00
   ------------------------ --------------- 234.8/385.2 MB 2.5 MB/s eta 0:01:00
   ------------------------ --------------- 234.9/385.2 MB 2.6 MB/s eta 0:00:59
   ------------------------ --------------- 235.1/385.2 MB 2.6 MB/s eta 0:00:59
   ------------------------ --------------- 235.2/385.2 MB 2.5 MB/s eta 0:00:59
   ------------------------ --------------- 235.4/385.2 MB 2.5 MB/s eta 0:00:59
   ------------------------ --------------- 235.5/385.2 MB 2.5 MB/s eta 0:00:59
   ------------------------ --------------- 235.6/385.2 MB 2.6 MB/s eta 0:00:58
   ------------------------ --------------- 235.8/385.2 MB 2.6 MB/s eta 0:00:58
   ------------------------ --------------- 235.9/385.2 MB 2.6 MB/s eta 0:00:58
   ------------------------ --------------- 236.0/385.2 MB 2.6 MB/s eta 0:00:58
   ------------------------ --------------- 236.2/385.2 MB 2.6 MB/s eta 0:00:58
   ------------------------ --------------- 236.3/385.2 MB 2.6 MB/s eta 0:00:58
   ------------------------ --------------- 236.4/385.2 MB 2.6 MB/s eta 0:00:58
   ------------------------ --------------- 236.6/385.2 MB 2.6 MB/s eta 0:00:57
   ------------------------ --------------- 236.7/385.2 MB 2.6 MB/s eta 0:00:58
   ------------------------ --------------- 236.8/385.2 MB 2.6 MB/s eta 0:00:57
   ------------------------ --------------- 236.9/385.2 MB 2.6 MB/s eta 0:00:57
   ------------------------ --------------- 237.1/385.2 MB 2.6 MB/s eta 0:00:57
   ------------------------ --------------- 237.2/385.2 MB 2.6 MB/s eta 0:00:57
   ------------------------ --------------- 237.4/385.2 MB 2.6 MB/s eta 0:00:56
   ------------------------ --------------- 237.5/385.2 MB 2.6 MB/s eta 0:00:56
   ------------------------ --------------- 237.6/385.2 MB 2.6 MB/s eta 0:00:57
   ------------------------ --------------- 237.7/385.2 MB 2.6 MB/s eta 0:00:57
   ------------------------ --------------- 237.9/385.2 MB 2.6 MB/s eta 0:00:57
   ------------------------ --------------- 238.0/385.2 MB 2.6 MB/s eta 0:00:56
   ------------------------ --------------- 238.1/385.2 MB 2.6 MB/s eta 0:00:57
   ------------------------ --------------- 238.3/385.2 MB 2.6 MB/s eta 0:00:56
   ------------------------ --------------- 238.4/385.2 MB 2.6 MB/s eta 0:00:57
   ------------------------ --------------- 238.5/385.2 MB 2.6 MB/s eta 0:00:56
   ------------------------ --------------- 238.7/385.2 MB 2.6 MB/s eta 0:00:56
   ------------------------ --------------- 238.8/385.2 MB 2.6 MB/s eta 0:00:56
   ------------------------ --------------- 238.9/385.2 MB 2.6 MB/s eta 0:00:56
   ------------------------ --------------- 239.0/385.2 MB 2.6 MB/s eta 0:00:56
   ------------------------ --------------- 239.2/385.2 MB 2.6 MB/s eta 0:00:56
   ------------------------ --------------- 239.3/385.2 MB 2.6 MB/s eta 0:00:56
   ------------------------ --------------- 239.5/385.2 MB 2.6 MB/s eta 0:00:56
   ------------------------ --------------- 239.6/385.2 MB 2.6 MB/s eta 0:00:56
   ------------------------ --------------- 239.7/385.2 MB 2.6 MB/s eta 0:00:56
   ------------------------ --------------- 239.8/385.2 MB 2.6 MB/s eta 0:00:56
   ------------------------ --------------- 239.9/385.2 MB 2.6 MB/s eta 0:00:56
   ------------------------ --------------- 240.1/385.2 MB 2.6 MB/s eta 0:00:55
   ------------------------ --------------- 240.2/385.2 MB 2.6 MB/s eta 0:00:55
   ------------------------ --------------- 240.3/385.2 MB 2.6 MB/s eta 0:00:55
   ------------------------ --------------- 240.4/385.2 MB 2.6 MB/s eta 0:00:55
   ------------------------ --------------- 240.6/385.2 MB 2.6 MB/s eta 0:00:55
   ------------------------ --------------- 240.7/385.2 MB 2.6 MB/s eta 0:00:55
   ------------------------- -------------- 240.8/385.2 MB 2.7 MB/s eta 0:00:55
   ------------------------- -------------- 240.9/385.2 MB 2.6 MB/s eta 0:00:55
   ------------------------- -------------- 241.0/385.2 MB 2.7 MB/s eta 0:00:55
   ------------------------- -------------- 241.2/385.2 MB 2.7 MB/s eta 0:00:55
   ------------------------- -------------- 241.3/385.2 MB 2.7 MB/s eta 0:00:55
   ------------------------- -------------- 241.4/385.2 MB 2.6 MB/s eta 0:00:55
   ------------------------- -------------- 241.5/385.2 MB 2.6 MB/s eta 0:00:55
   ------------------------- -------------- 241.6/385.2 MB 2.7 MB/s eta 0:00:55
   ------------------------- -------------- 241.7/385.2 MB 2.6 MB/s eta 0:00:55
   ------------------------- -------------- 241.8/385.2 MB 2.7 MB/s eta 0:00:55
   ------------------------- -------------- 242.0/385.2 MB 2.6 MB/s eta 0:00:55
   ------------------------- -------------- 242.1/385.2 MB 2.6 MB/s eta 0:00:55
   ------------------------- -------------- 242.2/385.2 MB 2.7 MB/s eta 0:00:54
   ------------------------- -------------- 242.3/385.2 MB 2.6 MB/s eta 0:00:55
   ------------------------- -------------- 242.4/385.2 MB 2.6 MB/s eta 0:00:55
   ------------------------- -------------- 242.6/385.2 MB 2.6 MB/s eta 0:00:55
   ------------------------- -------------- 242.7/385.2 MB 2.6 MB/s eta 0:00:54
   ------------------------- -------------- 242.8/385.2 MB 2.6 MB/s eta 0:00:54
   ------------------------- -------------- 242.9/385.2 MB 2.7 MB/s eta 0:00:54
   ------------------------- -------------- 243.1/385.2 MB 2.7 MB/s eta 0:00:54
   ------------------------- -------------- 243.2/385.2 MB 2.7 MB/s eta 0:00:54
   ------------------------- -------------- 243.3/385.2 MB 2.7 MB/s eta 0:00:54
   ------------------------- -------------- 243.5/385.2 MB 2.7 MB/s eta 0:00:54
   ------------------------- -------------- 243.6/385.2 MB 2.7 MB/s eta 0:00:54
   ------------------------- -------------- 243.7/385.2 MB 2.7 MB/s eta 0:00:54
   ------------------------- -------------- 243.9/385.2 MB 2.7 MB/s eta 0:00:54
   ------------------------- -------------- 244.0/385.2 MB 2.7 MB/s eta 0:00:54
   ------------------------- -------------- 244.1/385.2 MB 2.7 MB/s eta 0:00:53
   ------------------------- -------------- 244.3/385.2 MB 2.7 MB/s eta 0:00:53
   ------------------------- -------------- 244.4/385.2 MB 2.7 MB/s eta 0:00:53
   ------------------------- -------------- 244.5/385.2 MB 2.7 MB/s eta 0:00:53
   ------------------------- -------------- 244.6/385.2 MB 2.7 MB/s eta 0:00:53
   ------------------------- -------------- 244.8/385.2 MB 2.7 MB/s eta 0:00:53
   ------------------------- -------------- 244.9/385.2 MB 2.7 MB/s eta 0:00:53
   ------------------------- -------------- 245.1/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 245.2/385.2 MB 2.7 MB/s eta 0:00:53
   ------------------------- -------------- 245.3/385.2 MB 2.7 MB/s eta 0:00:53
   ------------------------- -------------- 245.5/385.2 MB 2.7 MB/s eta 0:00:53
   ------------------------- -------------- 245.6/385.2 MB 2.7 MB/s eta 0:00:53
   ------------------------- -------------- 245.7/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 245.9/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 246.0/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 246.1/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 246.3/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 246.4/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 246.5/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 246.6/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 246.7/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 246.8/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 247.0/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 247.1/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 247.2/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 247.3/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 247.5/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 247.6/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 247.7/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 247.9/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 248.0/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 248.1/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 248.2/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 248.4/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 248.5/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 248.6/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 248.8/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 248.9/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 249.0/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 249.1/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 249.3/385.2 MB 2.7 MB/s eta 0:00:52
   ------------------------- -------------- 249.4/385.2 MB 2.7 MB/s eta 0:00:51
   ------------------------- -------------- 249.5/385.2 MB 2.7 MB/s eta 0:00:51
   ------------------------- -------------- 249.7/385.2 MB 2.7 MB/s eta 0:00:51
   ------------------------- -------------- 249.8/385.2 MB 2.7 MB/s eta 0:00:51
   ------------------------- -------------- 249.9/385.2 MB 2.7 MB/s eta 0:00:51
   ------------------------- -------------- 250.1/385.2 MB 2.7 MB/s eta 0:00:51
   ------------------------- -------------- 250.2/385.2 MB 2.7 MB/s eta 0:00:51
   ------------------------- -------------- 250.3/385.2 MB 2.7 MB/s eta 0:00:51
   -------------------------- ------------- 250.5/385.2 MB 2.7 MB/s eta 0:00:51
   -------------------------- ------------- 250.6/385.2 MB 2.7 MB/s eta 0:00:51
   -------------------------- ------------- 250.8/385.2 MB 2.7 MB/s eta 0:00:51
   -------------------------- ------------- 250.9/385.2 MB 2.7 MB/s eta 0:00:51
   -------------------------- ------------- 251.0/385.2 MB 2.7 MB/s eta 0:00:50
   -------------------------- ------------- 251.1/385.2 MB 2.7 MB/s eta 0:00:50
   -------------------------- ------------- 251.3/385.2 MB 2.7 MB/s eta 0:00:50
   -------------------------- ------------- 251.4/385.2 MB 2.7 MB/s eta 0:00:50
   -------------------------- ------------- 251.6/385.2 MB 2.7 MB/s eta 0:00:50
   -------------------------- ------------- 251.7/385.2 MB 2.7 MB/s eta 0:00:50
   -------------------------- ------------- 251.8/385.2 MB 2.7 MB/s eta 0:00:49
   -------------------------- ------------- 251.9/385.2 MB 2.7 MB/s eta 0:00:50
   -------------------------- ------------- 252.1/385.2 MB 2.7 MB/s eta 0:00:49
   -------------------------- ------------- 252.2/385.2 MB 2.7 MB/s eta 0:00:49
   -------------------------- ------------- 252.3/385.2 MB 2.7 MB/s eta 0:00:49
   -------------------------- ------------- 252.5/385.2 MB 2.8 MB/s eta 0:00:49
   -------------------------- ------------- 252.6/385.2 MB 2.8 MB/s eta 0:00:49
   -------------------------- ------------- 252.8/385.2 MB 2.8 MB/s eta 0:00:49
   -------------------------- ------------- 252.9/385.2 MB 2.8 MB/s eta 0:00:49
   -------------------------- ------------- 253.0/385.2 MB 2.8 MB/s eta 0:00:49
   -------------------------- ------------- 253.1/385.2 MB 2.8 MB/s eta 0:00:48
   -------------------------- ------------- 253.3/385.2 MB 2.8 MB/s eta 0:00:48
   -------------------------- ------------- 253.4/385.2 MB 2.8 MB/s eta 0:00:48
   -------------------------- ------------- 253.5/385.2 MB 2.8 MB/s eta 0:00:48
   -------------------------- ------------- 253.7/385.2 MB 2.8 MB/s eta 0:00:48
   -------------------------- ------------- 253.8/385.2 MB 2.8 MB/s eta 0:00:48
   -------------------------- ------------- 253.9/385.2 MB 2.8 MB/s eta 0:00:48
   -------------------------- ------------- 254.1/385.2 MB 2.8 MB/s eta 0:00:48
   -------------------------- ------------- 254.2/385.2 MB 2.8 MB/s eta 0:00:48
   -------------------------- ------------- 254.3/385.2 MB 2.8 MB/s eta 0:00:48
   -------------------------- ------------- 254.5/385.2 MB 2.8 MB/s eta 0:00:48
   -------------------------- ------------- 254.6/385.2 MB 2.8 MB/s eta 0:00:48
   -------------------------- ------------- 254.7/385.2 MB 2.8 MB/s eta 0:00:48
   -------------------------- ------------- 254.9/385.2 MB 2.8 MB/s eta 0:00:48
   -------------------------- ------------- 255.0/385.2 MB 2.8 MB/s eta 0:00:48
   -------------------------- ------------- 255.1/385.2 MB 2.8 MB/s eta 0:00:48
   -------------------------- ------------- 255.3/385.2 MB 2.8 MB/s eta 0:00:48
   -------------------------- ------------- 255.4/385.2 MB 2.8 MB/s eta 0:00:48
   -------------------------- ------------- 255.5/385.2 MB 2.8 MB/s eta 0:00:47
   -------------------------- ------------- 255.7/385.2 MB 2.8 MB/s eta 0:00:48
   -------------------------- ------------- 255.8/385.2 MB 2.8 MB/s eta 0:00:48
   -------------------------- ------------- 255.9/385.2 MB 2.8 MB/s eta 0:00:47
   -------------------------- ------------- 256.1/385.2 MB 2.8 MB/s eta 0:00:47
   -------------------------- ------------- 256.2/385.2 MB 2.8 MB/s eta 0:00:47
   -------------------------- ------------- 256.3/385.2 MB 2.8 MB/s eta 0:00:47
   -------------------------- ------------- 256.5/385.2 MB 2.8 MB/s eta 0:00:47
   -------------------------- ------------- 256.5/385.2 MB 2.8 MB/s eta 0:00:47
   -------------------------- ------------- 256.6/385.2 MB 2.7 MB/s eta 0:00:47
   -------------------------- ------------- 256.8/385.2 MB 2.7 MB/s eta 0:00:47
   -------------------------- ------------- 256.9/385.2 MB 2.7 MB/s eta 0:00:47
   -------------------------- ------------- 257.0/385.2 MB 2.8 MB/s eta 0:00:47
   -------------------------- ------------- 257.1/385.2 MB 2.8 MB/s eta 0:00:47
   -------------------------- ------------- 257.3/385.2 MB 2.8 MB/s eta 0:00:47
   -------------------------- ------------- 257.4/385.2 MB 2.8 MB/s eta 0:00:47
   -------------------------- ------------- 257.4/385.2 MB 2.8 MB/s eta 0:00:47
   -------------------------- ------------- 257.4/385.2 MB 2.8 MB/s eta 0:00:47
   -------------------------- ------------- 257.4/385.2 MB 2.8 MB/s eta 0:00:47
   -------------------------- ------------- 257.4/385.2 MB 2.8 MB/s eta 0:00:47
   -------------------------- ------------- 257.4/385.2 MB 2.8 MB/s eta 0:00:47
   -------------------------- ------------- 257.4/385.2 MB 2.8 MB/s eta 0:00:47
   -------------------------- ------------- 257.4/385.2 MB 2.8 MB/s eta 0:00:47
   -------------------------- ------------- 257.4/385.2 MB 2.8 MB/s eta 0:00:47
   -------------------------- ------------- 257.5/385.2 MB 2.5 MB/s eta 0:00:52
   -------------------------- ------------- 258.5/385.2 MB 2.7 MB/s eta 0:00:47
   -------------------------- ------------- 258.7/385.2 MB 2.7 MB/s eta 0:00:47
   -------------------------- ------------- 258.8/385.2 MB 2.7 MB/s eta 0:00:47
   -------------------------- ------------- 258.9/385.2 MB 2.7 MB/s eta 0:00:47
   -------------------------- ------------- 259.1/385.2 MB 2.7 MB/s eta 0:00:47
   -------------------------- ------------- 259.2/385.2 MB 2.7 MB/s eta 0:00:47
   -------------------------- ------------- 259.3/385.2 MB 2.7 MB/s eta 0:00:47
   -------------------------- ------------- 259.5/385.2 MB 2.7 MB/s eta 0:00:47
   -------------------------- ------------- 259.6/385.2 MB 2.7 MB/s eta 0:00:47
   -------------------------- ------------- 259.8/385.2 MB 2.7 MB/s eta 0:00:46
   -------------------------- ------------- 259.9/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 260.0/385.2 MB 2.7 MB/s eta 0:00:47
   --------------------------- ------------ 260.2/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 260.3/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 260.4/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 260.6/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 260.7/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 260.8/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 261.0/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 261.1/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 261.2/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 261.4/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 261.5/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 261.6/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 261.7/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 261.9/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 262.0/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 262.1/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 262.3/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 262.4/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 262.5/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 262.6/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 262.7/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 262.9/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 263.0/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 263.1/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 263.2/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 263.5/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 263.6/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 263.7/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 263.9/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 264.0/385.2 MB 2.7 MB/s eta 0:00:45
   --------------------------- ------------ 264.1/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 264.2/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 264.4/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 264.5/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 264.6/385.2 MB 2.7 MB/s eta 0:00:45
   --------------------------- ------------ 264.8/385.2 MB 2.7 MB/s eta 0:00:46
   --------------------------- ------------ 264.9/385.2 MB 2.7 MB/s eta 0:00:45
   --------------------------- ------------ 265.0/385.2 MB 2.7 MB/s eta 0:00:45
   --------------------------- ------------ 265.2/385.2 MB 2.7 MB/s eta 0:00:45
   --------------------------- ------------ 265.3/385.2 MB 2.7 MB/s eta 0:00:45
   --------------------------- ------------ 265.4/385.2 MB 2.7 MB/s eta 0:00:45
   --------------------------- ------------ 265.6/385.2 MB 2.7 MB/s eta 0:00:45
   --------------------------- ------------ 265.7/385.2 MB 2.7 MB/s eta 0:00:45
   --------------------------- ------------ 265.8/385.2 MB 2.7 MB/s eta 0:00:45
   --------------------------- ------------ 266.0/385.2 MB 2.7 MB/s eta 0:00:45
   --------------------------- ------------ 266.1/385.2 MB 2.7 MB/s eta 0:00:45
   --------------------------- ------------ 266.2/385.2 MB 2.7 MB/s eta 0:00:45
   --------------------------- ------------ 266.4/385.2 MB 2.7 MB/s eta 0:00:45
   --------------------------- ------------ 266.5/385.2 MB 2.7 MB/s eta 0:00:45
   --------------------------- ------------ 266.6/385.2 MB 2.7 MB/s eta 0:00:44
   --------------------------- ------------ 266.8/385.2 MB 2.7 MB/s eta 0:00:44
   --------------------------- ------------ 266.9/385.2 MB 2.7 MB/s eta 0:00:44
   --------------------------- ------------ 267.0/385.2 MB 2.7 MB/s eta 0:00:44
   --------------------------- ------------ 267.2/385.2 MB 2.7 MB/s eta 0:00:44
   --------------------------- ------------ 267.3/385.2 MB 2.7 MB/s eta 0:00:44
   --------------------------- ------------ 267.5/385.2 MB 2.7 MB/s eta 0:00:44
   --------------------------- ------------ 267.6/385.2 MB 2.7 MB/s eta 0:00:44
   --------------------------- ------------ 267.7/385.2 MB 3.0 MB/s eta 0:00:39
   --------------------------- ------------ 267.8/385.2 MB 3.0 MB/s eta 0:00:39
   --------------------------- ------------ 268.0/385.2 MB 3.0 MB/s eta 0:00:40
   --------------------------- ------------ 268.1/385.2 MB 2.9 MB/s eta 0:00:40
   --------------------------- ------------ 268.3/385.2 MB 2.9 MB/s eta 0:00:41
   --------------------------- ------------ 268.4/385.2 MB 2.9 MB/s eta 0:00:41
   --------------------------- ------------ 268.5/385.2 MB 2.8 MB/s eta 0:00:41
   --------------------------- ------------ 268.6/385.2 MB 2.8 MB/s eta 0:00:42
   --------------------------- ------------ 268.8/385.2 MB 2.8 MB/s eta 0:00:42
   --------------------------- ------------ 268.9/385.2 MB 2.8 MB/s eta 0:00:43
   --------------------------- ------------ 268.9/385.2 MB 2.7 MB/s eta 0:00:43
   --------------------------- ------------ 269.0/385.2 MB 2.7 MB/s eta 0:00:43
   --------------------------- ------------ 269.2/385.2 MB 2.7 MB/s eta 0:00:43
   --------------------------- ------------ 269.3/385.2 MB 2.7 MB/s eta 0:00:43
   --------------------------- ------------ 269.4/385.2 MB 2.7 MB/s eta 0:00:43
   --------------------------- ------------ 269.5/385.2 MB 2.7 MB/s eta 0:00:43
   ---------------------------- ----------- 269.6/385.2 MB 2.7 MB/s eta 0:00:43
   ---------------------------- ----------- 269.8/385.2 MB 2.7 MB/s eta 0:00:43
   ---------------------------- ----------- 269.9/385.2 MB 2.7 MB/s eta 0:00:43
   ---------------------------- ----------- 270.1/385.2 MB 2.7 MB/s eta 0:00:43
   ---------------------------- ----------- 270.2/385.2 MB 2.7 MB/s eta 0:00:43
   ---------------------------- ----------- 270.3/385.2 MB 2.7 MB/s eta 0:00:43
   ---------------------------- ----------- 270.4/385.2 MB 2.7 MB/s eta 0:00:43
   ---------------------------- ----------- 270.6/385.2 MB 2.7 MB/s eta 0:00:43
   ---------------------------- ----------- 270.7/385.2 MB 2.7 MB/s eta 0:00:43
   ---------------------------- ----------- 270.8/385.2 MB 2.7 MB/s eta 0:00:43
   ---------------------------- ----------- 270.9/385.2 MB 2.7 MB/s eta 0:00:43
   ---------------------------- ----------- 271.0/385.2 MB 2.7 MB/s eta 0:00:43
   ---------------------------- ----------- 271.2/385.2 MB 2.7 MB/s eta 0:00:43
   ---------------------------- ----------- 271.3/385.2 MB 2.7 MB/s eta 0:00:43
   ---------------------------- ----------- 271.3/385.2 MB 2.7 MB/s eta 0:00:43
   ---------------------------- ----------- 271.5/385.2 MB 2.7 MB/s eta 0:00:43
   ---------------------------- ----------- 271.6/385.2 MB 2.7 MB/s eta 0:00:43
   ---------------------------- ----------- 271.7/385.2 MB 2.7 MB/s eta 0:00:43
   ---------------------------- ----------- 271.8/385.2 MB 2.7 MB/s eta 0:00:43
   ---------------------------- ----------- 271.9/385.2 MB 2.7 MB/s eta 0:00:43
   ---------------------------- ----------- 272.1/385.2 MB 2.7 MB/s eta 0:00:43
   ---------------------------- ----------- 272.2/385.2 MB 2.7 MB/s eta 0:00:43
   ---------------------------- ----------- 272.3/385.2 MB 2.7 MB/s eta 0:00:43
   ---------------------------- ----------- 272.5/385.2 MB 2.7 MB/s eta 0:00:43
   ---------------------------- ----------- 272.6/385.2 MB 2.7 MB/s eta 0:00:43
   ---------------------------- ----------- 272.7/385.2 MB 2.7 MB/s eta 0:00:43
   ---------------------------- ----------- 272.9/385.2 MB 2.7 MB/s eta 0:00:42
   ---------------------------- ----------- 273.0/385.2 MB 2.7 MB/s eta 0:00:42
   ---------------------------- ----------- 273.1/385.2 MB 2.7 MB/s eta 0:00:43
   ---------------------------- ----------- 273.3/385.2 MB 2.7 MB/s eta 0:00:42
   ---------------------------- ----------- 273.4/385.2 MB 2.7 MB/s eta 0:00:42
   ---------------------------- ----------- 273.5/385.2 MB 2.7 MB/s eta 0:00:42
   ---------------------------- ----------- 273.7/385.2 MB 2.7 MB/s eta 0:00:42
   ---------------------------- ----------- 273.8/385.2 MB 2.7 MB/s eta 0:00:42
   ---------------------------- ----------- 273.9/385.2 MB 2.7 MB/s eta 0:00:42
   ---------------------------- ----------- 274.1/385.2 MB 2.7 MB/s eta 0:00:42
   ---------------------------- ----------- 274.2/385.2 MB 2.7 MB/s eta 0:00:42
   ---------------------------- ----------- 274.3/385.2 MB 2.7 MB/s eta 0:00:42
   ---------------------------- ----------- 274.5/385.2 MB 2.7 MB/s eta 0:00:42
   ---------------------------- ----------- 274.6/385.2 MB 2.7 MB/s eta 0:00:42
   ---------------------------- ----------- 274.7/385.2 MB 2.7 MB/s eta 0:00:41
   ---------------------------- ----------- 274.8/385.2 MB 2.7 MB/s eta 0:00:41
   ---------------------------- ----------- 275.0/385.2 MB 2.7 MB/s eta 0:00:41
   ---------------------------- ----------- 275.1/385.2 MB 2.7 MB/s eta 0:00:41
   ---------------------------- ----------- 275.2/385.2 MB 2.7 MB/s eta 0:00:41
   ---------------------------- ----------- 275.4/385.2 MB 2.7 MB/s eta 0:00:42
   ---------------------------- ----------- 275.5/385.2 MB 2.7 MB/s eta 0:00:41
   ---------------------------- ----------- 275.6/385.2 MB 2.7 MB/s eta 0:00:41
   ---------------------------- ----------- 275.7/385.2 MB 2.7 MB/s eta 0:00:41
   ---------------------------- ----------- 275.9/385.2 MB 2.7 MB/s eta 0:00:41
   ---------------------------- ----------- 276.0/385.2 MB 2.7 MB/s eta 0:00:41
   ---------------------------- ----------- 276.1/385.2 MB 2.7 MB/s eta 0:00:41
   ---------------------------- ----------- 276.3/385.2 MB 2.7 MB/s eta 0:00:41
   ---------------------------- ----------- 276.4/385.2 MB 2.7 MB/s eta 0:00:41
   ---------------------------- ----------- 276.6/385.2 MB 2.7 MB/s eta 0:00:41
   ---------------------------- ----------- 276.7/385.2 MB 2.7 MB/s eta 0:00:41
   ---------------------------- ----------- 276.8/385.2 MB 2.7 MB/s eta 0:00:41
   ---------------------------- ----------- 276.9/385.2 MB 2.7 MB/s eta 0:00:41
   ---------------------------- ----------- 277.1/385.2 MB 2.7 MB/s eta 0:00:41
   ---------------------------- ----------- 277.2/385.2 MB 2.7 MB/s eta 0:00:41
   ---------------------------- ----------- 277.3/385.2 MB 2.7 MB/s eta 0:00:41
   ---------------------------- ----------- 277.5/385.2 MB 2.7 MB/s eta 0:00:41
   ---------------------------- ----------- 277.6/385.2 MB 2.7 MB/s eta 0:00:41
   ---------------------------- ----------- 277.7/385.2 MB 2.7 MB/s eta 0:00:41
   ---------------------------- ----------- 277.8/385.2 MB 2.7 MB/s eta 0:00:41
   ---------------------------- ----------- 278.0/385.2 MB 2.7 MB/s eta 0:00:41
   ---------------------------- ----------- 278.1/385.2 MB 2.7 MB/s eta 0:00:41
   ---------------------------- ----------- 278.3/385.2 MB 2.7 MB/s eta 0:00:41
   ---------------------------- ----------- 278.4/385.2 MB 2.7 MB/s eta 0:00:41
   ---------------------------- ----------- 278.5/385.2 MB 2.7 MB/s eta 0:00:40
   ---------------------------- ----------- 278.6/385.2 MB 2.7 MB/s eta 0:00:40
   ---------------------------- ----------- 278.8/385.2 MB 2.7 MB/s eta 0:00:40
   ---------------------------- ----------- 278.9/385.2 MB 2.7 MB/s eta 0:00:40
   ---------------------------- ----------- 279.0/385.2 MB 2.7 MB/s eta 0:00:40
   ---------------------------- ----------- 279.2/385.2 MB 2.7 MB/s eta 0:00:40
   ----------------------------- ---------- 279.3/385.2 MB 2.7 MB/s eta 0:00:39
   ----------------------------- ---------- 279.5/385.2 MB 2.7 MB/s eta 0:00:40
   ----------------------------- ---------- 279.6/385.2 MB 2.7 MB/s eta 0:00:39
   ----------------------------- ---------- 279.7/385.2 MB 2.7 MB/s eta 0:00:39
   ----------------------------- ---------- 279.9/385.2 MB 2.7 MB/s eta 0:00:39
   ----------------------------- ---------- 280.0/385.2 MB 2.7 MB/s eta 0:00:39
   ----------------------------- ---------- 280.1/385.2 MB 2.7 MB/s eta 0:00:39
   ----------------------------- ---------- 280.3/385.2 MB 2.7 MB/s eta 0:00:39
   ----------------------------- ---------- 280.4/385.2 MB 2.7 MB/s eta 0:00:39
   ----------------------------- ---------- 280.5/385.2 MB 2.7 MB/s eta 0:00:39
   ----------------------------- ---------- 280.7/385.2 MB 2.7 MB/s eta 0:00:39
   ----------------------------- ---------- 280.8/385.2 MB 2.7 MB/s eta 0:00:39
   ----------------------------- ---------- 280.9/385.2 MB 2.7 MB/s eta 0:00:39
   ----------------------------- ---------- 281.1/385.2 MB 2.8 MB/s eta 0:00:38
   ----------------------------- ---------- 281.2/385.2 MB 2.8 MB/s eta 0:00:38
   ----------------------------- ---------- 281.3/385.2 MB 2.8 MB/s eta 0:00:38
   ----------------------------- ---------- 281.5/385.2 MB 2.8 MB/s eta 0:00:38
   ----------------------------- ---------- 281.6/385.2 MB 2.8 MB/s eta 0:00:38
   ----------------------------- ---------- 281.7/385.2 MB 2.8 MB/s eta 0:00:38
   ----------------------------- ---------- 281.9/385.2 MB 2.8 MB/s eta 0:00:38
   ----------------------------- ---------- 282.0/385.2 MB 2.8 MB/s eta 0:00:38
   ----------------------------- ---------- 282.1/385.2 MB 2.8 MB/s eta 0:00:37
   ----------------------------- ---------- 282.3/385.2 MB 2.8 MB/s eta 0:00:37
   ----------------------------- ---------- 282.4/385.2 MB 2.8 MB/s eta 0:00:37
   ----------------------------- ---------- 282.5/385.2 MB 2.8 MB/s eta 0:00:37
   ----------------------------- ---------- 282.7/385.2 MB 2.8 MB/s eta 0:00:37
   ----------------------------- ---------- 282.8/385.2 MB 2.8 MB/s eta 0:00:37
   ----------------------------- ---------- 282.9/385.2 MB 2.8 MB/s eta 0:00:37
   ----------------------------- ---------- 283.1/385.2 MB 2.8 MB/s eta 0:00:37
   ----------------------------- ---------- 283.2/385.2 MB 2.8 MB/s eta 0:00:37
   ----------------------------- ---------- 283.3/385.2 MB 2.8 MB/s eta 0:00:37
   ----------------------------- ---------- 283.4/385.2 MB 2.8 MB/s eta 0:00:37
   ----------------------------- ---------- 283.5/385.2 MB 2.8 MB/s eta 0:00:37
   ----------------------------- ---------- 283.7/385.2 MB 2.8 MB/s eta 0:00:37
   ----------------------------- ---------- 283.8/385.2 MB 2.8 MB/s eta 0:00:37
   ----------------------------- ---------- 283.9/385.2 MB 2.8 MB/s eta 0:00:37
   ----------------------------- ---------- 284.1/385.2 MB 2.8 MB/s eta 0:00:37
   ----------------------------- ---------- 284.2/385.2 MB 2.8 MB/s eta 0:00:37
   ----------------------------- ---------- 284.3/385.2 MB 2.8 MB/s eta 0:00:37
   ----------------------------- ---------- 284.4/385.2 MB 2.8 MB/s eta 0:00:37
   ----------------------------- ---------- 284.6/385.2 MB 2.8 MB/s eta 0:00:37
   ----------------------------- ---------- 284.7/385.2 MB 2.8 MB/s eta 0:00:37
   ----------------------------- ---------- 284.8/385.2 MB 2.8 MB/s eta 0:00:37
   ----------------------------- ---------- 284.9/385.2 MB 2.8 MB/s eta 0:00:37
   ----------------------------- ---------- 285.1/385.2 MB 2.8 MB/s eta 0:00:37
   ----------------------------- ---------- 285.2/385.2 MB 2.8 MB/s eta 0:00:37
   ----------------------------- ---------- 285.3/385.2 MB 2.8 MB/s eta 0:00:37
   ----------------------------- ---------- 285.5/385.2 MB 2.8 MB/s eta 0:00:37
   ----------------------------- ---------- 285.6/385.2 MB 2.8 MB/s eta 0:00:36
   ----------------------------- ---------- 285.7/385.2 MB 2.8 MB/s eta 0:00:37
   ----------------------------- ---------- 285.8/385.2 MB 2.8 MB/s eta 0:00:36
   ----------------------------- ---------- 286.0/385.2 MB 2.8 MB/s eta 0:00:36
   ----------------------------- ---------- 286.1/385.2 MB 2.8 MB/s eta 0:00:36
   ----------------------------- ---------- 286.2/385.2 MB 2.8 MB/s eta 0:00:36
   ----------------------------- ---------- 286.4/385.2 MB 2.8 MB/s eta 0:00:36
   ----------------------------- ---------- 286.5/385.2 MB 2.8 MB/s eta 0:00:36
   ----------------------------- ---------- 286.6/385.2 MB 2.8 MB/s eta 0:00:36
   ----------------------------- ---------- 286.8/385.2 MB 2.8 MB/s eta 0:00:36
   ----------------------------- ---------- 286.9/385.2 MB 2.8 MB/s eta 0:00:36
   ----------------------------- ---------- 287.0/385.2 MB 2.8 MB/s eta 0:00:36
   ----------------------------- ---------- 287.2/385.2 MB 2.8 MB/s eta 0:00:36
   ----------------------------- ---------- 287.3/385.2 MB 2.8 MB/s eta 0:00:36
   ----------------------------- ---------- 287.5/385.2 MB 2.8 MB/s eta 0:00:36
   ----------------------------- ---------- 287.6/385.2 MB 2.8 MB/s eta 0:00:36
   ----------------------------- ---------- 287.7/385.2 MB 2.8 MB/s eta 0:00:36
   ----------------------------- ---------- 287.9/385.2 MB 2.8 MB/s eta 0:00:36
   ----------------------------- ---------- 288.0/385.2 MB 2.8 MB/s eta 0:00:36
   ----------------------------- ---------- 288.1/385.2 MB 2.8 MB/s eta 0:00:35
   ----------------------------- ---------- 288.3/385.2 MB 2.8 MB/s eta 0:00:35
   ----------------------------- ---------- 288.4/385.2 MB 2.8 MB/s eta 0:00:35
   ----------------------------- ---------- 288.5/385.2 MB 2.8 MB/s eta 0:00:35
   ----------------------------- ---------- 288.7/385.2 MB 2.8 MB/s eta 0:00:35
   ----------------------------- ---------- 288.8/385.2 MB 2.8 MB/s eta 0:00:35
   ------------------------------ --------- 288.9/385.2 MB 2.8 MB/s eta 0:00:35
   ------------------------------ --------- 289.1/385.2 MB 2.8 MB/s eta 0:00:35
   ------------------------------ --------- 289.2/385.2 MB 2.8 MB/s eta 0:00:35
   ------------------------------ --------- 289.3/385.2 MB 2.8 MB/s eta 0:00:35
   ------------------------------ --------- 289.5/385.2 MB 2.8 MB/s eta 0:00:35
   ------------------------------ --------- 289.6/385.2 MB 2.8 MB/s eta 0:00:35
   ------------------------------ --------- 289.8/385.2 MB 2.8 MB/s eta 0:00:35
   ------------------------------ --------- 289.9/385.2 MB 2.8 MB/s eta 0:00:35
   ------------------------------ --------- 290.0/385.2 MB 2.8 MB/s eta 0:00:35
   ------------------------------ --------- 290.1/385.2 MB 2.8 MB/s eta 0:00:35
   ------------------------------ --------- 290.3/385.2 MB 2.8 MB/s eta 0:00:35
   ------------------------------ --------- 290.4/385.2 MB 2.8 MB/s eta 0:00:35
   ------------------------------ --------- 290.5/385.2 MB 2.8 MB/s eta 0:00:34
   ------------------------------ --------- 290.7/385.2 MB 2.8 MB/s eta 0:00:35
   ------------------------------ --------- 290.8/385.2 MB 2.8 MB/s eta 0:00:34
   ------------------------------ --------- 291.0/385.2 MB 2.8 MB/s eta 0:00:34
   ------------------------------ --------- 291.1/385.2 MB 2.8 MB/s eta 0:00:34
   ------------------------------ --------- 291.2/385.2 MB 2.8 MB/s eta 0:00:34
   ------------------------------ --------- 291.4/385.2 MB 2.8 MB/s eta 0:00:34
   ------------------------------ --------- 291.5/385.2 MB 2.8 MB/s eta 0:00:34
   ------------------------------ --------- 291.6/385.2 MB 2.8 MB/s eta 0:00:34
   ------------------------------ --------- 291.8/385.2 MB 2.8 MB/s eta 0:00:34
   ------------------------------ --------- 291.9/385.2 MB 2.8 MB/s eta 0:00:34
   ------------------------------ --------- 292.0/385.2 MB 2.8 MB/s eta 0:00:34
   ------------------------------ --------- 292.2/385.2 MB 2.8 MB/s eta 0:00:34
   ------------------------------ --------- 292.3/385.2 MB 2.8 MB/s eta 0:00:34
   ------------------------------ --------- 292.5/385.2 MB 2.8 MB/s eta 0:00:34
   ------------------------------ --------- 292.6/385.2 MB 2.8 MB/s eta 0:00:34
   ------------------------------ --------- 292.7/385.2 MB 2.8 MB/s eta 0:00:34
   ------------------------------ --------- 292.8/385.2 MB 2.8 MB/s eta 0:00:34
   ------------------------------ --------- 293.0/385.2 MB 2.8 MB/s eta 0:00:34
   ------------------------------ --------- 293.1/385.2 MB 2.8 MB/s eta 0:00:34
   ------------------------------ --------- 293.3/385.2 MB 2.8 MB/s eta 0:00:33
   ------------------------------ --------- 293.4/385.2 MB 2.8 MB/s eta 0:00:33
   ------------------------------ --------- 293.6/385.2 MB 2.8 MB/s eta 0:00:33
   ------------------------------ --------- 293.7/385.2 MB 2.8 MB/s eta 0:00:33
   ------------------------------ --------- 293.8/385.2 MB 2.8 MB/s eta 0:00:33
   ------------------------------ --------- 294.0/385.2 MB 2.8 MB/s eta 0:00:33
   ------------------------------ --------- 294.1/385.2 MB 2.8 MB/s eta 0:00:33
   ------------------------------ --------- 294.2/385.2 MB 2.8 MB/s eta 0:00:33
   ------------------------------ --------- 294.4/385.2 MB 2.8 MB/s eta 0:00:33
   ------------------------------ --------- 294.5/385.2 MB 2.8 MB/s eta 0:00:33
   ------------------------------ --------- 294.6/385.2 MB 2.8 MB/s eta 0:00:33
   ------------------------------ --------- 294.8/385.2 MB 2.8 MB/s eta 0:00:33
   ------------------------------ --------- 294.9/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------ --------- 295.0/385.2 MB 2.8 MB/s eta 0:00:33
   ------------------------------ --------- 295.2/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------ --------- 295.3/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------ --------- 295.4/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------ --------- 295.5/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------ --------- 295.7/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------ --------- 295.8/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------ --------- 295.9/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------ --------- 296.1/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------ --------- 296.2/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------ --------- 296.3/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------ --------- 296.4/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------ --------- 296.5/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------ --------- 296.6/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------ --------- 296.8/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------ --------- 296.9/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------ --------- 297.1/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------ --------- 297.2/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------ --------- 297.3/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------ --------- 297.5/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------ --------- 297.6/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------ --------- 297.7/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------ --------- 297.8/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------ --------- 298.0/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------ --------- 298.1/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------ --------- 298.2/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------ --------- 298.3/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------ --------- 298.5/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------- -------- 298.6/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------- -------- 298.7/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------- -------- 298.8/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------- -------- 298.9/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------- -------- 299.0/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------- -------- 299.2/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------- -------- 299.3/385.2 MB 2.8 MB/s eta 0:00:32
   ------------------------------- -------- 299.4/385.2 MB 2.7 MB/s eta 0:00:32
   ------------------------------- -------- 299.5/385.2 MB 2.7 MB/s eta 0:00:32
   ------------------------------- -------- 299.6/385.2 MB 2.7 MB/s eta 0:00:32
   ------------------------------- -------- 299.8/385.2 MB 2.7 MB/s eta 0:00:32
   ------------------------------- -------- 299.9/385.2 MB 2.7 MB/s eta 0:00:32
   ------------------------------- -------- 300.0/385.2 MB 2.7 MB/s eta 0:00:32
   ------------------------------- -------- 300.1/385.2 MB 2.7 MB/s eta 0:00:32
   ------------------------------- -------- 300.2/385.2 MB 2.7 MB/s eta 0:00:32
   ------------------------------- -------- 300.3/385.2 MB 2.7 MB/s eta 0:00:32
   ------------------------------- -------- 300.4/385.2 MB 2.7 MB/s eta 0:00:32
   ------------------------------- -------- 300.6/385.2 MB 2.7 MB/s eta 0:00:32
   ------------------------------- -------- 300.7/385.2 MB 2.7 MB/s eta 0:00:32
   ------------------------------- -------- 300.8/385.2 MB 2.7 MB/s eta 0:00:32
   ------------------------------- -------- 301.0/385.2 MB 2.7 MB/s eta 0:00:32
   ------------------------------- -------- 301.1/385.2 MB 2.7 MB/s eta 0:00:32
   ------------------------------- -------- 301.2/385.2 MB 2.7 MB/s eta 0:00:32
   ------------------------------- -------- 301.4/385.2 MB 2.7 MB/s eta 0:00:32
   ------------------------------- -------- 301.5/385.2 MB 2.7 MB/s eta 0:00:32
   ------------------------------- -------- 301.6/385.2 MB 2.7 MB/s eta 0:00:31
   ------------------------------- -------- 301.8/385.2 MB 2.7 MB/s eta 0:00:32
   ------------------------------- -------- 301.9/385.2 MB 2.7 MB/s eta 0:00:32
   ------------------------------- -------- 302.0/385.2 MB 2.7 MB/s eta 0:00:31
   ------------------------------- -------- 302.2/385.2 MB 2.7 MB/s eta 0:00:31
   ------------------------------- -------- 302.3/385.2 MB 2.7 MB/s eta 0:00:31
   ------------------------------- -------- 302.4/385.2 MB 2.7 MB/s eta 0:00:31
   ------------------------------- -------- 302.6/385.2 MB 2.7 MB/s eta 0:00:31
   ------------------------------- -------- 302.7/385.2 MB 2.7 MB/s eta 0:00:31
   ------------------------------- -------- 302.8/385.2 MB 2.7 MB/s eta 0:00:31
   ------------------------------- -------- 303.0/385.2 MB 2.7 MB/s eta 0:00:31
   ------------------------------- -------- 303.1/385.2 MB 2.7 MB/s eta 0:00:31
   ------------------------------- -------- 303.2/385.2 MB 2.7 MB/s eta 0:00:31
   ------------------------------- -------- 303.3/385.2 MB 2.7 MB/s eta 0:00:31
   ------------------------------- -------- 303.4/385.2 MB 2.7 MB/s eta 0:00:31
   ------------------------------- -------- 303.5/385.2 MB 2.7 MB/s eta 0:00:31
   ------------------------------- -------- 303.6/385.2 MB 2.7 MB/s eta 0:00:31
   ------------------------------- -------- 303.8/385.2 MB 2.7 MB/s eta 0:00:31
   ------------------------------- -------- 303.9/385.2 MB 2.7 MB/s eta 0:00:31
   ------------------------------- -------- 304.0/385.2 MB 2.7 MB/s eta 0:00:31
   ------------------------------- -------- 304.1/385.2 MB 2.7 MB/s eta 0:00:31
   ------------------------------- -------- 304.3/385.2 MB 2.6 MB/s eta 0:00:31
   ------------------------------- -------- 304.3/385.2 MB 2.6 MB/s eta 0:00:31
   ------------------------------- -------- 304.4/385.2 MB 2.6 MB/s eta 0:00:31
   ------------------------------- -------- 304.5/385.2 MB 2.6 MB/s eta 0:00:31
   ------------------------------- -------- 304.7/385.2 MB 2.6 MB/s eta 0:00:31
   ------------------------------- -------- 304.8/385.2 MB 2.6 MB/s eta 0:00:31
   ------------------------------- -------- 304.9/385.2 MB 2.6 MB/s eta 0:00:31
   ------------------------------- -------- 305.0/385.2 MB 2.6 MB/s eta 0:00:31
   ------------------------------- -------- 305.2/385.2 MB 2.6 MB/s eta 0:00:31
   ------------------------------- -------- 305.3/385.2 MB 2.6 MB/s eta 0:00:31
   ------------------------------- -------- 305.5/385.2 MB 2.6 MB/s eta 0:00:31
   ------------------------------- -------- 305.6/385.2 MB 2.6 MB/s eta 0:00:31
   ------------------------------- -------- 305.7/385.2 MB 2.6 MB/s eta 0:00:31
   ------------------------------- -------- 305.8/385.2 MB 2.6 MB/s eta 0:00:31
   ------------------------------- -------- 306.0/385.2 MB 2.6 MB/s eta 0:00:31
   ------------------------------- -------- 306.1/385.2 MB 2.6 MB/s eta 0:00:31
   ------------------------------- -------- 306.2/385.2 MB 2.6 MB/s eta 0:00:31
   ------------------------------- -------- 306.4/385.2 MB 2.6 MB/s eta 0:00:30
   ------------------------------- -------- 306.5/385.2 MB 2.6 MB/s eta 0:00:30
   ------------------------------- -------- 306.6/385.2 MB 2.6 MB/s eta 0:00:30
   ------------------------------- -------- 306.8/385.2 MB 2.6 MB/s eta 0:00:30
   ------------------------------- -------- 306.9/385.2 MB 2.6 MB/s eta 0:00:30
   ------------------------------- -------- 307.0/385.2 MB 2.6 MB/s eta 0:00:30
   ------------------------------- -------- 307.2/385.2 MB 2.6 MB/s eta 0:00:30
   ------------------------------- -------- 307.3/385.2 MB 2.6 MB/s eta 0:00:30
   ------------------------------- -------- 307.4/385.2 MB 2.6 MB/s eta 0:00:30
   ------------------------------- -------- 307.6/385.2 MB 2.6 MB/s eta 0:00:30
   ------------------------------- -------- 307.7/385.2 MB 2.6 MB/s eta 0:00:30
   ------------------------------- -------- 307.8/385.2 MB 2.6 MB/s eta 0:00:30
   ------------------------------- -------- 307.9/385.2 MB 2.6 MB/s eta 0:00:30
   ------------------------------- -------- 308.1/385.2 MB 2.7 MB/s eta 0:00:30
   -------------------------------- ------- 308.2/385.2 MB 2.7 MB/s eta 0:00:30
   -------------------------------- ------- 308.3/385.2 MB 2.7 MB/s eta 0:00:29
   -------------------------------- ------- 308.5/385.2 MB 2.6 MB/s eta 0:00:30
   -------------------------------- ------- 308.6/385.2 MB 2.7 MB/s eta 0:00:29
   -------------------------------- ------- 308.7/385.2 MB 2.7 MB/s eta 0:00:29
   -------------------------------- ------- 308.8/385.2 MB 2.7 MB/s eta 0:00:29
   -------------------------------- ------- 309.0/385.2 MB 2.7 MB/s eta 0:00:29
   -------------------------------- ------- 309.1/385.2 MB 2.7 MB/s eta 0:00:29
   -------------------------------- ------- 309.2/385.2 MB 2.7 MB/s eta 0:00:29
   -------------------------------- ------- 309.4/385.2 MB 2.7 MB/s eta 0:00:29
   -------------------------------- ------- 309.5/385.2 MB 2.7 MB/s eta 0:00:29
   -------------------------------- ------- 309.6/385.2 MB 2.7 MB/s eta 0:00:29
   -------------------------------- ------- 309.7/385.2 MB 2.7 MB/s eta 0:00:29
   -------------------------------- ------- 309.9/385.2 MB 2.7 MB/s eta 0:00:29
   -------------------------------- ------- 310.0/385.2 MB 2.7 MB/s eta 0:00:28
   -------------------------------- ------- 310.2/385.2 MB 2.7 MB/s eta 0:00:28
   -------------------------------- ------- 310.3/385.2 MB 2.7 MB/s eta 0:00:28
   -------------------------------- ------- 310.4/385.2 MB 2.7 MB/s eta 0:00:28
   -------------------------------- ------- 310.5/385.2 MB 2.7 MB/s eta 0:00:28
   -------------------------------- ------- 310.7/385.2 MB 2.7 MB/s eta 0:00:28
   -------------------------------- ------- 310.8/385.2 MB 2.7 MB/s eta 0:00:28
   -------------------------------- ------- 311.0/385.2 MB 2.7 MB/s eta 0:00:28
   -------------------------------- ------- 311.1/385.2 MB 2.7 MB/s eta 0:00:28
   -------------------------------- ------- 311.2/385.2 MB 2.7 MB/s eta 0:00:28
   -------------------------------- ------- 311.4/385.2 MB 2.7 MB/s eta 0:00:28
   -------------------------------- ------- 311.5/385.2 MB 2.7 MB/s eta 0:00:28
   -------------------------------- ------- 311.6/385.2 MB 2.7 MB/s eta 0:00:28
   -------------------------------- ------- 311.8/385.2 MB 2.7 MB/s eta 0:00:28
   -------------------------------- ------- 311.9/385.2 MB 2.7 MB/s eta 0:00:27
   -------------------------------- ------- 312.0/385.2 MB 2.7 MB/s eta 0:00:28
   -------------------------------- ------- 312.2/385.2 MB 2.7 MB/s eta 0:00:27
   -------------------------------- ------- 312.3/385.2 MB 2.7 MB/s eta 0:00:27
   -------------------------------- ------- 312.4/385.2 MB 2.7 MB/s eta 0:00:27
   -------------------------------- ------- 312.6/385.2 MB 2.7 MB/s eta 0:00:27
   -------------------------------- ------- 312.7/385.2 MB 2.7 MB/s eta 0:00:27
   -------------------------------- ------- 312.8/385.2 MB 2.7 MB/s eta 0:00:27
   -------------------------------- ------- 313.0/385.2 MB 2.7 MB/s eta 0:00:27
   -------------------------------- ------- 313.1/385.2 MB 2.7 MB/s eta 0:00:27
   -------------------------------- ------- 313.2/385.2 MB 2.7 MB/s eta 0:00:27
   -------------------------------- ------- 313.3/385.2 MB 2.7 MB/s eta 0:00:27
   -------------------------------- ------- 313.5/385.2 MB 2.7 MB/s eta 0:00:27
   -------------------------------- ------- 313.6/385.2 MB 2.7 MB/s eta 0:00:27
   -------------------------------- ------- 313.7/385.2 MB 2.7 MB/s eta 0:00:27
   -------------------------------- ------- 313.9/385.2 MB 2.7 MB/s eta 0:00:27
   -------------------------------- ------- 314.0/385.2 MB 2.7 MB/s eta 0:00:27
   -------------------------------- ------- 314.1/385.2 MB 2.7 MB/s eta 0:00:26
   -------------------------------- ------- 314.2/385.2 MB 2.7 MB/s eta 0:00:26
   -------------------------------- ------- 314.4/385.2 MB 2.8 MB/s eta 0:00:26
   -------------------------------- ------- 314.5/385.2 MB 2.8 MB/s eta 0:00:26
   -------------------------------- ------- 314.7/385.2 MB 2.8 MB/s eta 0:00:26
   -------------------------------- ------- 314.8/385.2 MB 2.8 MB/s eta 0:00:26
   -------------------------------- ------- 314.9/385.2 MB 2.8 MB/s eta 0:00:26
   -------------------------------- ------- 315.1/385.2 MB 2.8 MB/s eta 0:00:26
   -------------------------------- ------- 315.2/385.2 MB 2.8 MB/s eta 0:00:26
   -------------------------------- ------- 315.3/385.2 MB 2.8 MB/s eta 0:00:26
   -------------------------------- ------- 315.5/385.2 MB 2.8 MB/s eta 0:00:26
   -------------------------------- ------- 315.6/385.2 MB 2.8 MB/s eta 0:00:26
   -------------------------------- ------- 315.8/385.2 MB 2.8 MB/s eta 0:00:26
   -------------------------------- ------- 315.9/385.2 MB 2.8 MB/s eta 0:00:25
   -------------------------------- ------- 316.0/385.2 MB 2.8 MB/s eta 0:00:25
   -------------------------------- ------- 316.2/385.2 MB 2.8 MB/s eta 0:00:25
   -------------------------------- ------- 316.3/385.2 MB 2.8 MB/s eta 0:00:25
   -------------------------------- ------- 316.4/385.2 MB 2.8 MB/s eta 0:00:25
   -------------------------------- ------- 316.5/385.2 MB 2.8 MB/s eta 0:00:25
   -------------------------------- ------- 316.7/385.2 MB 2.8 MB/s eta 0:00:25
   -------------------------------- ------- 316.8/385.2 MB 2.8 MB/s eta 0:00:25
   -------------------------------- ------- 316.9/385.2 MB 2.8 MB/s eta 0:00:25
   -------------------------------- ------- 317.0/385.2 MB 2.8 MB/s eta 0:00:25
   -------------------------------- ------- 317.2/385.2 MB 2.8 MB/s eta 0:00:25
   -------------------------------- ------- 317.3/385.2 MB 2.8 MB/s eta 0:00:25
   -------------------------------- ------- 317.4/385.2 MB 2.8 MB/s eta 0:00:25
   -------------------------------- ------- 317.6/385.2 MB 2.8 MB/s eta 0:00:25
   -------------------------------- ------- 317.7/385.2 MB 2.8 MB/s eta 0:00:25
   --------------------------------- ------ 317.8/385.2 MB 2.8 MB/s eta 0:00:25
   --------------------------------- ------ 317.9/385.2 MB 2.8 MB/s eta 0:00:25
   --------------------------------- ------ 318.1/385.2 MB 2.8 MB/s eta 0:00:25
   --------------------------------- ------ 318.2/385.2 MB 2.8 MB/s eta 0:00:25
   --------------------------------- ------ 318.4/385.2 MB 2.8 MB/s eta 0:00:25
   --------------------------------- ------ 318.5/385.2 MB 2.8 MB/s eta 0:00:25
   --------------------------------- ------ 318.6/385.2 MB 2.8 MB/s eta 0:00:24
   --------------------------------- ------ 318.7/385.2 MB 2.8 MB/s eta 0:00:24
   --------------------------------- ------ 318.9/385.2 MB 2.8 MB/s eta 0:00:24
   --------------------------------- ------ 319.0/385.2 MB 2.8 MB/s eta 0:00:24
   --------------------------------- ------ 319.1/385.2 MB 2.8 MB/s eta 0:00:24
   --------------------------------- ------ 319.3/385.2 MB 2.8 MB/s eta 0:00:24
   --------------------------------- ------ 319.4/385.2 MB 2.8 MB/s eta 0:00:24
   --------------------------------- ------ 319.5/385.2 MB 2.8 MB/s eta 0:00:24
   --------------------------------- ------ 319.7/385.2 MB 2.8 MB/s eta 0:00:24
   --------------------------------- ------ 319.8/385.2 MB 2.8 MB/s eta 0:00:24
   --------------------------------- ------ 319.9/385.2 MB 2.8 MB/s eta 0:00:24
   --------------------------------- ------ 320.1/385.2 MB 2.8 MB/s eta 0:00:24
   --------------------------------- ------ 320.2/385.2 MB 2.8 MB/s eta 0:00:24
   --------------------------------- ------ 320.3/385.2 MB 2.8 MB/s eta 0:00:24
   --------------------------------- ------ 320.5/385.2 MB 2.8 MB/s eta 0:00:24
   --------------------------------- ------ 320.6/385.2 MB 2.8 MB/s eta 0:00:24
   --------------------------------- ------ 320.7/385.2 MB 2.8 MB/s eta 0:00:24
   --------------------------------- ------ 320.9/385.2 MB 2.8 MB/s eta 0:00:24
   --------------------------------- ------ 321.0/385.2 MB 2.8 MB/s eta 0:00:24
   --------------------------------- ------ 321.1/385.2 MB 2.8 MB/s eta 0:00:23
   --------------------------------- ------ 321.3/385.2 MB 2.8 MB/s eta 0:00:23
   --------------------------------- ------ 321.4/385.2 MB 2.8 MB/s eta 0:00:23
   --------------------------------- ------ 321.6/385.2 MB 2.8 MB/s eta 0:00:23
   --------------------------------- ------ 321.7/385.2 MB 2.8 MB/s eta 0:00:23
   --------------------------------- ------ 321.8/385.2 MB 2.8 MB/s eta 0:00:23
   --------------------------------- ------ 322.0/385.2 MB 2.8 MB/s eta 0:00:23
   --------------------------------- ------ 322.1/385.2 MB 2.8 MB/s eta 0:00:23
   --------------------------------- ------ 322.2/385.2 MB 2.8 MB/s eta 0:00:23
   --------------------------------- ------ 322.4/385.2 MB 2.8 MB/s eta 0:00:23
   --------------------------------- ------ 322.5/385.2 MB 2.8 MB/s eta 0:00:23
   --------------------------------- ------ 322.6/385.2 MB 2.8 MB/s eta 0:00:23
   --------------------------------- ------ 322.8/385.2 MB 2.8 MB/s eta 0:00:23
   --------------------------------- ------ 322.9/385.2 MB 2.8 MB/s eta 0:00:23
   --------------------------------- ------ 323.0/385.2 MB 2.8 MB/s eta 0:00:23
   --------------------------------- ------ 323.2/385.2 MB 2.8 MB/s eta 0:00:23
   --------------------------------- ------ 323.3/385.2 MB 2.8 MB/s eta 0:00:23
   --------------------------------- ------ 323.4/385.2 MB 2.8 MB/s eta 0:00:23
   --------------------------------- ------ 323.6/385.2 MB 2.8 MB/s eta 0:00:23
   --------------------------------- ------ 323.7/385.2 MB 2.8 MB/s eta 0:00:23
   --------------------------------- ------ 323.8/385.2 MB 2.8 MB/s eta 0:00:23
   --------------------------------- ------ 323.9/385.2 MB 2.8 MB/s eta 0:00:22
   --------------------------------- ------ 324.1/385.2 MB 2.8 MB/s eta 0:00:22
   --------------------------------- ------ 324.2/385.2 MB 2.8 MB/s eta 0:00:22
   --------------------------------- ------ 324.3/385.2 MB 2.8 MB/s eta 0:00:22
   --------------------------------- ------ 324.5/385.2 MB 2.8 MB/s eta 0:00:22
   --------------------------------- ------ 324.6/385.2 MB 2.8 MB/s eta 0:00:22
   --------------------------------- ------ 324.7/385.2 MB 2.8 MB/s eta 0:00:22
   --------------------------------- ------ 324.8/385.2 MB 2.8 MB/s eta 0:00:22
   --------------------------------- ------ 325.0/385.2 MB 2.8 MB/s eta 0:00:22
   --------------------------------- ------ 325.1/385.2 MB 2.8 MB/s eta 0:00:22
   --------------------------------- ------ 325.3/385.2 MB 2.8 MB/s eta 0:00:22
   --------------------------------- ------ 325.4/385.2 MB 2.8 MB/s eta 0:00:22
   --------------------------------- ------ 325.5/385.2 MB 2.8 MB/s eta 0:00:22
   --------------------------------- ------ 325.6/385.2 MB 2.8 MB/s eta 0:00:22
   --------------------------------- ------ 325.8/385.2 MB 2.8 MB/s eta 0:00:22
   --------------------------------- ------ 325.9/385.2 MB 2.8 MB/s eta 0:00:22
   --------------------------------- ------ 326.0/385.2 MB 2.8 MB/s eta 0:00:22
   --------------------------------- ------ 326.2/385.2 MB 2.8 MB/s eta 0:00:22
   --------------------------------- ------ 326.3/385.2 MB 2.8 MB/s eta 0:00:22
   --------------------------------- ------ 326.4/385.2 MB 2.8 MB/s eta 0:00:22
   --------------------------------- ------ 326.6/385.2 MB 2.8 MB/s eta 0:00:22
   --------------------------------- ------ 326.7/385.2 MB 2.8 MB/s eta 0:00:22
   --------------------------------- ------ 326.8/385.2 MB 2.8 MB/s eta 0:00:22
   --------------------------------- ------ 327.0/385.2 MB 2.8 MB/s eta 0:00:22
   --------------------------------- ------ 327.1/385.2 MB 2.8 MB/s eta 0:00:21
   --------------------------------- ------ 327.2/385.2 MB 2.8 MB/s eta 0:00:21
   --------------------------------- ------ 327.4/385.2 MB 2.8 MB/s eta 0:00:21
   ---------------------------------- ----- 327.5/385.2 MB 2.8 MB/s eta 0:00:21
   ---------------------------------- ----- 327.6/385.2 MB 2.8 MB/s eta 0:00:21
   ---------------------------------- ----- 327.8/385.2 MB 2.8 MB/s eta 0:00:21
   ---------------------------------- ----- 327.9/385.2 MB 2.8 MB/s eta 0:00:21
   ---------------------------------- ----- 328.0/385.2 MB 2.8 MB/s eta 0:00:21
   ---------------------------------- ----- 328.2/385.2 MB 2.8 MB/s eta 0:00:21
   ---------------------------------- ----- 328.3/385.2 MB 2.8 MB/s eta 0:00:21
   ---------------------------------- ----- 328.4/385.2 MB 2.8 MB/s eta 0:00:21
   ---------------------------------- ----- 328.6/385.2 MB 2.8 MB/s eta 0:00:21
   ---------------------------------- ----- 328.7/385.2 MB 2.8 MB/s eta 0:00:21
   ---------------------------------- ----- 328.8/385.2 MB 2.8 MB/s eta 0:00:21
   ---------------------------------- ----- 329.0/385.2 MB 2.8 MB/s eta 0:00:21
   ---------------------------------- ----- 329.1/385.2 MB 2.8 MB/s eta 0:00:21
   ---------------------------------- ----- 329.2/385.2 MB 2.8 MB/s eta 0:00:21
   ---------------------------------- ----- 329.3/385.2 MB 2.8 MB/s eta 0:00:21
   ---------------------------------- ----- 329.5/385.2 MB 2.8 MB/s eta 0:00:20
   ---------------------------------- ----- 329.6/385.2 MB 2.8 MB/s eta 0:00:21
   ---------------------------------- ----- 329.8/385.2 MB 2.8 MB/s eta 0:00:20
   ---------------------------------- ----- 329.9/385.2 MB 2.8 MB/s eta 0:00:20
   ---------------------------------- ----- 330.0/385.2 MB 2.8 MB/s eta 0:00:20
   ---------------------------------- ----- 330.2/385.2 MB 2.8 MB/s eta 0:00:20
   ---------------------------------- ----- 330.3/385.2 MB 2.8 MB/s eta 0:00:20
   ---------------------------------- ----- 330.4/385.2 MB 2.8 MB/s eta 0:00:20
   ---------------------------------- ----- 330.5/385.2 MB 2.8 MB/s eta 0:00:20
   ---------------------------------- ----- 330.7/385.2 MB 2.8 MB/s eta 0:00:20
   ---------------------------------- ----- 330.8/385.2 MB 2.8 MB/s eta 0:00:20
   ---------------------------------- ----- 331.0/385.2 MB 2.8 MB/s eta 0:00:20
   ---------------------------------- ----- 331.1/385.2 MB 2.8 MB/s eta 0:00:20
   ---------------------------------- ----- 331.2/385.2 MB 2.8 MB/s eta 0:00:20
   ---------------------------------- ----- 331.3/385.2 MB 2.8 MB/s eta 0:00:20
   ---------------------------------- ----- 331.5/385.2 MB 2.8 MB/s eta 0:00:20
   ---------------------------------- ----- 331.6/385.2 MB 2.8 MB/s eta 0:00:20
   ---------------------------------- ----- 331.8/385.2 MB 2.8 MB/s eta 0:00:20
   ---------------------------------- ----- 331.9/385.2 MB 2.8 MB/s eta 0:00:20
   ---------------------------------- ----- 332.0/385.2 MB 2.8 MB/s eta 0:00:20
   ---------------------------------- ----- 332.1/385.2 MB 2.8 MB/s eta 0:00:20
   ---------------------------------- ----- 332.3/385.2 MB 2.8 MB/s eta 0:00:20
   ---------------------------------- ----- 332.4/385.2 MB 2.8 MB/s eta 0:00:20
   ---------------------------------- ----- 332.5/385.2 MB 2.8 MB/s eta 0:00:19
   ---------------------------------- ----- 332.7/385.2 MB 2.8 MB/s eta 0:00:19
   ---------------------------------- ----- 332.8/385.2 MB 2.8 MB/s eta 0:00:19
   ---------------------------------- ----- 332.9/385.2 MB 2.8 MB/s eta 0:00:19
   ---------------------------------- ----- 333.0/385.2 MB 2.8 MB/s eta 0:00:19
   ---------------------------------- ----- 333.2/385.2 MB 2.8 MB/s eta 0:00:19
   ---------------------------------- ----- 333.3/385.2 MB 2.8 MB/s eta 0:00:19
   ---------------------------------- ----- 333.4/385.2 MB 2.8 MB/s eta 0:00:19
   ---------------------------------- ----- 333.6/385.2 MB 2.8 MB/s eta 0:00:19
   ---------------------------------- ----- 333.7/385.2 MB 2.8 MB/s eta 0:00:19
   ---------------------------------- ----- 333.8/385.2 MB 2.8 MB/s eta 0:00:19
   ---------------------------------- ----- 334.0/385.2 MB 2.8 MB/s eta 0:00:19
   ---------------------------------- ----- 334.1/385.2 MB 2.8 MB/s eta 0:00:19
   ---------------------------------- ----- 334.2/385.2 MB 2.8 MB/s eta 0:00:19
   ---------------------------------- ----- 334.4/385.2 MB 2.8 MB/s eta 0:00:19
   ---------------------------------- ----- 334.5/385.2 MB 2.8 MB/s eta 0:00:19
   ---------------------------------- ----- 334.6/385.2 MB 2.8 MB/s eta 0:00:19
   ---------------------------------- ----- 334.7/385.2 MB 2.8 MB/s eta 0:00:19
   ---------------------------------- ----- 334.9/385.2 MB 2.8 MB/s eta 0:00:19
   ---------------------------------- ----- 335.0/385.2 MB 2.8 MB/s eta 0:00:19
   ---------------------------------- ----- 335.1/385.2 MB 2.8 MB/s eta 0:00:18
   ---------------------------------- ----- 335.3/385.2 MB 2.8 MB/s eta 0:00:18
   ---------------------------------- ----- 335.4/385.2 MB 2.8 MB/s eta 0:00:18
   ---------------------------------- ----- 335.5/385.2 MB 2.8 MB/s eta 0:00:18
   ---------------------------------- ----- 335.6/385.2 MB 2.8 MB/s eta 0:00:18
   ---------------------------------- ----- 335.8/385.2 MB 2.8 MB/s eta 0:00:18
   ---------------------------------- ----- 335.9/385.2 MB 2.8 MB/s eta 0:00:18
   ---------------------------------- ----- 336.0/385.2 MB 2.8 MB/s eta 0:00:18
   ---------------------------------- ----- 336.2/385.2 MB 2.8 MB/s eta 0:00:18
   ---------------------------------- ----- 336.3/385.2 MB 2.8 MB/s eta 0:00:18
   ---------------------------------- ----- 336.4/385.2 MB 2.8 MB/s eta 0:00:18
   ---------------------------------- ----- 336.6/385.2 MB 2.8 MB/s eta 0:00:18
   ---------------------------------- ----- 336.7/385.2 MB 2.8 MB/s eta 0:00:18
   ---------------------------------- ----- 336.8/385.2 MB 2.8 MB/s eta 0:00:18
   ---------------------------------- ----- 337.0/385.2 MB 2.8 MB/s eta 0:00:18
   ----------------------------------- ---- 337.1/385.2 MB 2.8 MB/s eta 0:00:18
   ----------------------------------- ---- 337.2/385.2 MB 2.8 MB/s eta 0:00:18
   ----------------------------------- ---- 337.4/385.2 MB 2.8 MB/s eta 0:00:18
   ----------------------------------- ---- 337.5/385.2 MB 2.8 MB/s eta 0:00:18
   ----------------------------------- ---- 337.6/385.2 MB 2.8 MB/s eta 0:00:18
   ----------------------------------- ---- 337.8/385.2 MB 2.8 MB/s eta 0:00:18
   ----------------------------------- ---- 337.9/385.2 MB 2.8 MB/s eta 0:00:18
   ----------------------------------- ---- 338.0/385.2 MB 2.8 MB/s eta 0:00:17
   ----------------------------------- ---- 338.1/385.2 MB 2.8 MB/s eta 0:00:17
   ----------------------------------- ---- 338.3/385.2 MB 2.8 MB/s eta 0:00:17
   ----------------------------------- ---- 338.4/385.2 MB 2.8 MB/s eta 0:00:17
   ----------------------------------- ---- 338.6/385.2 MB 2.8 MB/s eta 0:00:17
   ----------------------------------- ---- 338.7/385.2 MB 2.8 MB/s eta 0:00:17
   ----------------------------------- ---- 338.8/385.2 MB 2.8 MB/s eta 0:00:17
   ----------------------------------- ---- 339.0/385.2 MB 2.8 MB/s eta 0:00:17
   ----------------------------------- ---- 339.1/385.2 MB 2.8 MB/s eta 0:00:17
   ----------------------------------- ---- 339.2/385.2 MB 2.8 MB/s eta 0:00:17
   ----------------------------------- ---- 339.4/385.2 MB 2.8 MB/s eta 0:00:17
   ----------------------------------- ---- 339.5/385.2 MB 2.8 MB/s eta 0:00:17
   ----------------------------------- ---- 339.6/385.2 MB 2.8 MB/s eta 0:00:17
   ----------------------------------- ---- 339.7/385.2 MB 2.8 MB/s eta 0:00:17
   ----------------------------------- ---- 339.9/385.2 MB 2.8 MB/s eta 0:00:17
   ----------------------------------- ---- 340.0/385.2 MB 2.8 MB/s eta 0:00:17
   ----------------------------------- ---- 340.1/385.2 MB 2.8 MB/s eta 0:00:17
   ----------------------------------- ---- 340.3/385.2 MB 2.8 MB/s eta 0:00:17
   ----------------------------------- ---- 340.4/385.2 MB 2.8 MB/s eta 0:00:17
   ----------------------------------- ---- 340.5/385.2 MB 2.8 MB/s eta 0:00:17
   ----------------------------------- ---- 340.7/385.2 MB 2.8 MB/s eta 0:00:17
   ----------------------------------- ---- 340.8/385.2 MB 2.8 MB/s eta 0:00:16
   ----------------------------------- ---- 340.9/385.2 MB 2.8 MB/s eta 0:00:17
   ----------------------------------- ---- 341.1/385.2 MB 2.8 MB/s eta 0:00:16
   ----------------------------------- ---- 341.2/385.2 MB 2.8 MB/s eta 0:00:16
   ----------------------------------- ---- 341.3/385.2 MB 2.8 MB/s eta 0:00:16
   ----------------------------------- ---- 341.5/385.2 MB 2.8 MB/s eta 0:00:16
   ----------------------------------- ---- 341.6/385.2 MB 2.8 MB/s eta 0:00:16
   ----------------------------------- ---- 341.7/385.2 MB 2.8 MB/s eta 0:00:16
   ----------------------------------- ---- 341.9/385.2 MB 2.8 MB/s eta 0:00:16
   ----------------------------------- ---- 342.0/385.2 MB 2.8 MB/s eta 0:00:16
   ----------------------------------- ---- 342.1/385.2 MB 2.8 MB/s eta 0:00:16
   ----------------------------------- ---- 342.3/385.2 MB 2.8 MB/s eta 0:00:16
   ----------------------------------- ---- 342.4/385.2 MB 2.8 MB/s eta 0:00:16
   ----------------------------------- ---- 342.5/385.2 MB 2.8 MB/s eta 0:00:16
   ----------------------------------- ---- 342.7/385.2 MB 2.8 MB/s eta 0:00:16
   ----------------------------------- ---- 342.8/385.2 MB 2.8 MB/s eta 0:00:16
   ----------------------------------- ---- 342.9/385.2 MB 2.8 MB/s eta 0:00:16
   ----------------------------------- ---- 343.1/385.2 MB 2.8 MB/s eta 0:00:16
   ----------------------------------- ---- 343.2/385.2 MB 2.8 MB/s eta 0:00:16
   ----------------------------------- ---- 343.3/385.2 MB 2.8 MB/s eta 0:00:16
   ----------------------------------- ---- 343.5/385.2 MB 2.8 MB/s eta 0:00:15

Import Libraries¶

In [2]:
pip install folium
Collecting folium
  Using cached folium-0.17.0-py2.py3-none-any.whl.metadata (3.8 kB)
Collecting branca>=0.6.0 (from folium)
  Using cached branca-0.7.2-py3-none-any.whl.metadata (1.5 kB)
Requirement already satisfied: jinja2>=2.9 in d:\anaconda\lib\site-packages (from folium) (3.1.4)
Requirement already satisfied: numpy in d:\anaconda\lib\site-packages (from folium) (1.26.4)
Requirement already satisfied: requests in d:\anaconda\lib\site-packages (from folium) (2.32.2)
Requirement already satisfied: xyzservices in d:\anaconda\lib\site-packages (from folium) (2022.9.0)
Requirement already satisfied: MarkupSafe>=2.0 in d:\anaconda\lib\site-packages (from jinja2>=2.9->folium) (2.1.3)
Requirement already satisfied: charset-normalizer<4,>=2 in d:\anaconda\lib\site-packages (from requests->folium) (2.0.4)
Requirement already satisfied: idna<4,>=2.5 in d:\anaconda\lib\site-packages (from requests->folium) (3.7)
Requirement already satisfied: urllib3<3,>=1.21.1 in d:\anaconda\lib\site-packages (from requests->folium) (2.2.2)
Requirement already satisfied: certifi>=2017.4.17 in d:\anaconda\lib\site-packages (from requests->folium) (2024.6.2)
Using cached folium-0.17.0-py2.py3-none-any.whl (108 kB)
Downloading branca-0.7.2-py3-none-any.whl (25 kB)
Installing collected packages: branca, folium
Successfully installed branca-0.7.2 folium-0.17.0
Note: you may need to restart the kernel to use updated packages.
In [1]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import folium
from sklearn.preprocessing import LabelEncoder
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.pipeline import make_pipeline
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import classification_report

Generate and Save Synthetic Dataset¶

In [2]:
# Generating synthetic dataset for military bases and geopolitical tensions
data = {
    'Base_ID': range(1, 21),
    'Base_Name': [f'Base_{i}' for i in range(1, 21)],
    'Latitude': np.random.uniform(low=8, high=37, size=20),
    'Longitude': np.random.uniform(low=68, high=97, size=20),
    'Status': np.random.choice(['Operational', 'Under Maintenance', 'Inactive'], size=20),
    'Geopolitical_Tension': np.random.choice(['High', 'Medium', 'Low'], size=20),
    'News_Sentiment': np.random.uniform(low=-1, high=1, size=20)  # sentiment score
}

df = pd.DataFrame(data)
df.to_csv('military_bases.csv', index=False)

Load Dataset¶

In [3]:
df = pd.read_csv(r'E:\military_bases.csv')
print(df.head())
df.head()
   Base_ID Base_Name   Latitude  Longitude             Status  \
0        1    Base_1  16.537303  81.683864  Under Maintenance   
1        2    Base_2  22.941793  81.987453           Inactive   
2        3    Base_3   8.659434  73.728087           Inactive   
3        4    Base_4  22.096507  71.879424           Inactive   
4        5    Base_5  12.686359  69.638381        Operational   

  Geopolitical_Tension  News_Sentiment  
0                  Low        0.868011  
1               Medium       -0.862570  
2                 High        0.620423  
3                 High       -0.966775  
4                 High       -0.360609  
Out[3]:
Base_ID Base_Name Latitude Longitude Status Geopolitical_Tension News_Sentiment
0 1 Base_1 16.537303 81.683864 Under Maintenance Low 0.868011
1 2 Base_2 22.941793 81.987453 Inactive Medium -0.862570
2 3 Base_3 8.659434 73.728087 Inactive High 0.620423
3 4 Base_4 22.096507 71.879424 Inactive High -0.966775
4 5 Base_5 12.686359 69.638381 Operational High -0.360609

Data Preprocessing¶

In [4]:
# Encoding categorical variables
label_enc = LabelEncoder()
df['Status_Encoded'] = label_enc.fit_transform(df['Status'])
df['Tension_Encoded'] = label_enc.fit_transform(df['Geopolitical_Tension'])

Visualize Basic Information¶

In [165]:
# Step 4: Basic EDA
print("Dataset Shape:", df.shape)
print("Dataset Info:")
print(df.info())
print("Dataset Description:")
print(df.describe())
print("Checking for missing values:")
print(df.isnull().sum())
Dataset Shape: (3, 4)
Dataset Info:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 4 columns):
 #   Column         Non-Null Count  Dtype  
---  ------         --------------  -----  
 0   State          3 non-null      object 
 1   Latitude       3 non-null      float64
 2   Longitude      3 non-null      float64
 3   Tension_Level  3 non-null      int64  
dtypes: float64(2), int64(1), object(1)
memory usage: 228.0+ bytes
None
Dataset Description:
        Latitude  Longitude  Tension_Level
count   3.000000   3.000000            3.0
mean   20.220500  75.893767            4.0
std     7.883705   2.619096            1.0
min    12.971600  72.877700            3.0
25%    16.023800  75.043350            3.5
50%    19.076000  77.209000            4.0
75%    23.844950  77.401800            4.5
max    28.613900  77.594600            5.0
Checking for missing values:
State            0
Latitude         0
Longitude        0
Tension_Level    0
dtype: int64

Create Bar Chart for Military Base Status¶

In [5]:
# Plotting Bar Chart for Military Base Status
status_counts = df['Status'].value_counts()
plt.figure(figsize=(10, 6))
sns.barplot(x=status_counts.index, y=status_counts.values, palette='viridis')
plt.title('Count of Military Bases by Status')
plt.xlabel('Status')
plt.ylabel('Count')
plt.show()
C:\Users\pradu\AppData\Local\Temp\ipykernel_5892\666584068.py:4: FutureWarning: 

Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.

  sns.barplot(x=status_counts.index, y=status_counts.values, palette='viridis')
No description has been provided for this image

Create Pie Chart for Geopolitical Tension¶

In [6]:
# Plotting Pie Chart for Geopolitical Tension
tension_counts = df['Geopolitical_Tension'].value_counts()
plt.figure(figsize=(8, 8))
plt.pie(tension_counts, labels=tension_counts.index, autopct='%1.1f%%', startangle=140)
plt.title('Distribution of Geopolitical Tensions')
plt.show()
No description has been provided for this image

Create Histogram for News Sentiment¶

In [7]:
# Plotting Histogram for News Sentiment
plt.figure(figsize=(10, 6))
plt.hist(df['News_Sentiment'], bins=10, edgecolor='black')
plt.title('Distribution of News Sentiment')
plt.xlabel('Sentiment Score')
plt.ylabel('Frequency')
plt.show()
No description has been provided for this image

Create Scatter Plot for Latitude vs Longitude¶

In [8]:
# Plotting Scatter Plot for Latitude vs Longitude
plt.figure(figsize=(10, 6))
sns.scatterplot(x='Longitude', y='Latitude', hue='Geopolitical_Tension', data=df, palette='coolwarm')
plt.title('Military Bases Location')
plt.xlabel('Longitude')
plt.ylabel('Latitude')
plt.show()
No description has been provided for this image

Create Line Chart for News Sentiment¶

In [9]:
# Plotting Line Chart for News Sentiment
plt.figure(figsize=(10, 6))
sns.lineplot(x='Base_ID', y='News_Sentiment', data=df, marker='o')
plt.title('News Sentiment Over Military Bases')
plt.xlabel('Base ID')
plt.ylabel('News Sentiment')
plt.show()
No description has been provided for this image

Create Radar Chart for Tension and Sentiment¶

In [10]:
# Radar Chart requires a specific library; for simplicity, we use plotly
import plotly.graph_objects as go

# Prepare data for Radar Chart
categories = ['High', 'Medium', 'Low']
values = df.groupby('Geopolitical_Tension')['News_Sentiment'].mean().reindex(categories).values

fig = go.Figure()
fig.add_trace(go.Scatterpolar(
    r=values,
    theta=categories,
    fill='toself'
))
fig.update_layout(
    polar=dict(
        radialaxis=dict(visible=True, range=[-1, 1])
    ),
    showlegend=False
)
fig.show()

Create Heatmap for Base Status and Geopolitical Tension¶

In [11]:
# Pivot table for Heatmap
heatmap_data = pd.pivot_table(df, values='Base_ID', index='Status', columns='Geopolitical_Tension', aggfunc='count')

plt.figure(figsize=(10, 6))
sns.heatmap(heatmap_data, annot=True, cmap='YlGnBu')
plt.title('Heatmap of Base Status and Geopolitical Tension')
plt.show()
No description has been provided for this image

Create Pairplot for Features¶

In [12]:
# # Pairplot for Numerical Features
sns.pairplot(df[['Latitude', 'Longitude', 'News_Sentiment']], diag_kind='kde')
plt.suptitle('Pairplot of Military Bases Features', y=1.02)
plt.show()
No description has been provided for this image

Create Map for Military Bases¶

In [17]:
import pandas as pd
import folium
import webbrowser

# Sample DataFrame creation (Replace this with your actual DataFrame)
# Assuming 'df' is your DataFrame
# df = pd.read_csv('your_data_file.csv')  # Example of reading from a CSV file

# Check if 'Latitude' and 'Longitude' columns are present in the DataFrame
required_columns = ['Latitude', 'Longitude', 'Base_Name', 'Status', 'Geopolitical_Tension']
missing_columns = [col for col in required_columns if col not in df.columns]

# Print missing columns
if missing_columns:
    print(f"Missing columns: {missing_columns}")

    # If 'Latitude' or 'Longitude' is missing, add them with default values
    if 'Latitude' not in df.columns:
        df['Latitude'] = None  # Or use a default value if appropriate
        print("'Latitude' column added to DataFrame.")

    if 'Longitude' not in df.columns:
        df['Longitude'] = None  # Or use a default value if appropriate
        print("'Longitude' column added to DataFrame.")

    # Display the updated DataFrame
    print("Updated DataFrame:")
    print(df)

# Create Interactive Map with Folium
map = folium.Map(location=[20.5937, 78.9629], zoom_start=5)  # Center of India

# Add markers to the map
for _, row in df.iterrows():
    if pd.notna(row['Latitude']) and pd.notna(row['Longitude']):  # Check if coordinates are not NaN
        folium.Marker(
            location=[row['Latitude'], row['Longitude']],
            popup=f"{row['Base_Name']}: {row['Status']}, Tension: {row['Geopolitical_Tension']}",
            icon=folium.Icon(color='blue' if row['Status'] == 'Operational' else 'red')
        ).add_to(map)

# Save the map to an HTML file
map_filename = 'military_bases_map.html'
map.save(map_filename)

# Display the saved map in a browser (requires a local server or opening manually)
webbrowser.open(map_filename)
Missing columns: ['Latitude', 'Longitude', 'Base_Name', 'Status', 'Geopolitical_Tension']
'Latitude' column added to DataFrame.
'Longitude' column added to DataFrame.
Updated DataFrame:
            geopolitical_tension_index  cluster Latitude Longitude
date                                                              
2023-01-01                         1.2        0     None      None
2023-01-02                         3.4        1     None      None
2023-01-03                         2.1        2     None      None
2023-01-04                         4.2        1     None      None
2023-01-05                         5.6        1     None      None
2023-01-06                         4.4        1     None      None
2023-01-07                         3.3        1     None      None
2023-01-08                         2.2        2     None      None
2023-01-09                         1.1        0     None      None
2023-01-10                         0.5        0     None      None
Out[17]:
True
In [18]:
import pandas as pd
import folium
import webbrowser

# Sample DataFrame creation (Replace this with your actual DataFrame)
# Assuming 'df' is your DataFrame
# df = pd.read_csv('your_data_file.csv')  # Example of reading from a CSV file

# Check if 'Latitude' and 'Longitude' columns are present in the DataFrame
required_columns = ['Latitude', 'Longitude', 'Base_Name', 'Status', 'Geopolitical_Tension']
missing_columns = [col for col in required_columns if col not in df.columns]

# Print missing columns
if missing_columns:
    print(f"Missing columns: {missing_columns}")

    # If 'Latitude' or 'Longitude' is missing, add them with default values
    if 'Latitude' not in df.columns:
        df['Latitude'] = None  # Or use a default value if appropriate
        print("'Latitude' column added to DataFrame.")

    if 'Longitude' not in df.columns:
        df['Longitude'] = None  # Or use a default value if appropriate
        print("'Longitude' column added to DataFrame.")

    # Display the updated DataFrame
    print("Updated DataFrame:")
    print(df)

# Create Interactive Map with Folium (world map)
map = folium.Map(location=[0, 0], zoom_start=2)  # Center of the world

# Define a custom icon (red triangle)
icon = folium.CustomIcon(icon_image='https://img.icons8.com/ios-filled/50/FF0000/triangle.png', icon_size=(20, 20))

# Add markers to the map
for _, row in df.iterrows():
    if pd.notna(row['Latitude']) and pd.notna(row['Longitude']):  # Check if coordinates are not NaN
        folium.Marker(
            location=[row['Latitude'], row['Longitude']],
            popup=f"{row['Base_Name']}: {row['Status']}, Tension: {row['Geopolitical_Tension']}",
            icon=icon
        ).add_to(map)

# Save the map to an HTML file
map_filename = 'world_military_bases_map.html'
map.save(map_filename)

# Display the saved map in a browser (requires a local server or opening manually)
webbrowser.open(map_filename)
Missing columns: ['Base_Name', 'Status', 'Geopolitical_Tension']
Updated DataFrame:
            geopolitical_tension_index  cluster Latitude Longitude
date                                                              
2023-01-01                         1.2        0     None      None
2023-01-02                         3.4        1     None      None
2023-01-03                         2.1        2     None      None
2023-01-04                         4.2        1     None      None
2023-01-05                         5.6        1     None      None
2023-01-06                         4.4        1     None      None
2023-01-07                         3.3        1     None      None
2023-01-08                         2.2        2     None      None
2023-01-09                         1.1        0     None      None
2023-01-10                         0.5        0     None      None
Out[18]:
True

Sentiment Analysis with Simple Text Classification¶

In [14]:
# Assuming some news headlines for sentiment analysis
news_headlines = [
    "Increased tensions at military base",
    "Peaceful relations with neighboring countries",
    "Base operational readiness under review",
    "Geopolitical tensions rising in the region"
]

# TF-IDF Vectorizer and Naive Bayes Classifier
tfidf = TfidfVectorizer()
X = tfidf.fit_transform(news_headlines)
y = np.array([1, 0, 1, 1])  # 1: High Tension, 0: Low Tension

model = make_pipeline(TfidfVectorizer(), MultinomialNB())
model.fit(news_headlines, y)
predictions = model.predict(news_headlines)

print("Predictions:", predictions)
Predictions: [1 0 1 1]

PCA for Dimensionality Reductio¶

In [15]:
# PCA for dimensionality reduction
pca = PCA(n_components=2)
pca_result = pca.fit_transform(df[['Latitude', 'Longitude']])

plt.figure(figsize=(10, 6))
plt.scatter(pca_result[:, 0], pca_result[:, 1], c=df['Tension_Encoded'], cmap='viridis')
plt.colorbar(label='Geopolitical Tension')
plt.title('PCA of Military Bases')
plt.xlabel('PCA Component 1')
plt.ylabel('PCA Component 2')
plt.show()
No description has been provided for this image

K-Means Clustering for Bases¶

In [16]:
# K-Means Clustering
kmeans = KMeans(n_clusters=3)
clusters = kmeans.fit_predict(df[['Latitude', 'Longitude']])

plt.figure(figsize=(10, 6))
plt.scatter(df['Longitude'], df['Latitude'], c=clusters, cmap='viridis')
plt.title('K-Means Clustering of Military Bases')
plt.xlabel('Longitude')
plt.ylabel('Latitude')
plt.show()
D:\Anaconda\Lib\site-packages\sklearn\cluster\_kmeans.py:1446: UserWarning:

KMeans is known to have a memory leak on Windows with MKL, when there are less chunks than available threads. You can avoid it by setting the environment variable OMP_NUM_THREADS=1.

No description has been provided for this image

Advanced Visualization of News Sentiment¶

In [17]:
# Advanced visualization with Seaborn
plt.figure(figsize=(12, 8))
sns.kdeplot(df['News_Sentiment'], fill=True, color='purple')
plt.title('Kernel Density Estimate of News Sentiment')
plt.xlabel('News Sentiment')
plt.ylabel('Density')
plt.show()
No description has been provided for this image

Data Cleaning and Feature Engineering¶

In [18]:
# Data cleaning
df['News_Sentiment'] = df['News_Sentiment'].clip(lower=-1, upper=1)  # Clipping sentiment values
print(df['News_Sentiment'])
df['News_Sentiment']

# Feature Engineering
df['Sentiment_Category'] = pd.cut(df['News_Sentiment'], bins=[-1, -0.5, 0.5, 1], labels=['Negative', 'Neutral', 'Positive'])
print("\n\n",df['Sentiment_Category'])
df['Sentiment_Category']
0     0.868011
1    -0.862570
2     0.620423
3    -0.966775
4    -0.360609
5     0.319514
6    -0.074969
7    -0.439232
8    -0.524677
9     0.515723
10    0.857362
11    0.992929
12   -0.947990
13   -0.838949
14   -0.126149
15    0.116404
16   -0.752320
17    0.832531
18    0.608803
19   -0.520889
Name: News_Sentiment, dtype: float64


 0     Positive
1     Negative
2     Positive
3     Negative
4      Neutral
5      Neutral
6      Neutral
7      Neutral
8     Negative
9     Positive
10    Positive
11    Positive
12    Negative
13    Negative
14     Neutral
15     Neutral
16    Negative
17    Positive
18    Positive
19    Negative
Name: Sentiment_Category, dtype: category
Categories (3, object): ['Negative' < 'Neutral' < 'Positive']
Out[18]:
0     Positive
1     Negative
2     Positive
3     Negative
4      Neutral
5      Neutral
6      Neutral
7      Neutral
8     Negative
9     Positive
10    Positive
11    Positive
12    Negative
13    Negative
14     Neutral
15     Neutral
16    Negative
17    Positive
18    Positive
19    Negative
Name: Sentiment_Category, dtype: category
Categories (3, object): ['Negative' < 'Neutral' < 'Positive']

Visualize Sentiment Categories¶

In [19]:
# Bar chart for Sentiment Categories
sentiment_counts = df['Sentiment_Category'].value_counts()
plt.figure(figsize=(10, 6))
sns.barplot(x=sentiment_counts.index, y=sentiment_counts.values, palette='coolwarm')
plt.title('Sentiment Category Distribution')
plt.xlabel('Sentiment Category')
plt.ylabel('Count')
plt.show()
C:\Users\pradu\AppData\Local\Temp\ipykernel_5892\3686427115.py:4: FutureWarning:



Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.


No description has been provided for this image

Explore Correlation Between Features¶

In [20]:
# Correlation heatmap
corr = df[['Latitude', 'Longitude', 'News_Sentiment']].corr()

plt.figure(figsize=(8, 6))
sns.heatmap(corr, annot=True, cmap='coolwarm', fmt='.2f')
plt.title('Correlation Heatmap')
plt.show()
No description has been provided for this image

Machine Learning Model Evaluation¶

In [21]:
# Example of model evaluation (assuming supervised learning task)
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(df[['Latitude', 'Longitude']], df['Tension_Encoded'], test_size=0.3, random_state=42)

model = KMeans(n_clusters=3)
model.fit(X_train)
predictions = model.predict(X_test)

print(classification_report(y_test, predictions))
              precision    recall  f1-score   support

           0       0.00      0.00      0.00         2
           1       1.00      0.33      0.50         3
           2       0.20      1.00      0.33         1

    accuracy                           0.33         6
   macro avg       0.40      0.44      0.28         6
weighted avg       0.53      0.33      0.31         6

D:\Anaconda\Lib\site-packages\sklearn\cluster\_kmeans.py:1446: UserWarning:

KMeans is known to have a memory leak on Windows with MKL, when there are less chunks than available threads. You can avoid it by setting the environment variable OMP_NUM_THREADS=1.

D:\Anaconda\Lib\site-packages\sklearn\metrics\_classification.py:1509: UndefinedMetricWarning:

Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.

D:\Anaconda\Lib\site-packages\sklearn\metrics\_classification.py:1509: UndefinedMetricWarning:

Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.

D:\Anaconda\Lib\site-packages\sklearn\metrics\_classification.py:1509: UndefinedMetricWarning:

Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.

Time Series Analysis of Tensions¶

In [22]:
import pandas as pd
import matplotlib.pyplot as plt

# Sample data to define df_tension
data = {
    'Date': ['2024-01-01', '2024-01-15', '2024-02-01', '2024-02-15', '2024-03-01'],
    'Tension_Level': [5.1, 6.3, 7.2, 6.5, 8.0]
}

# Creating the DataFrame
df_tension = pd.DataFrame(data)

# Converting the 'Date' column to datetime format and setting it as the index
df_tension['Date'] = pd.to_datetime(df_tension['Date'])
df_tension.set_index('Date', inplace=True)

# Resampling the data to get the mean tension level per month and plotting
df_tension['Tension_Level'].resample('M').mean().plot()
plt.title('Monthly Geopolitical Tension Levels')
plt.xlabel('Date')
plt.ylabel('Tension Level')
plt.show()
C:\Users\pradu\AppData\Local\Temp\ipykernel_5892\1788281171.py:18: FutureWarning:

'M' is deprecated and will be removed in a future version, please use 'ME' instead.

No description has been provided for this image

Sentiment Analysis of Geopolitical News¶

In [24]:
pip install textblob
Collecting textblobNote: you may need to restart the kernel to use updated packages.

  Using cached textblob-0.18.0.post0-py3-none-any.whl.metadata (4.5 kB)
Requirement already satisfied: nltk>=3.8 in d:\anaconda\lib\site-packages (from textblob) (3.8.1)
Requirement already satisfied: click in d:\anaconda\lib\site-packages (from nltk>=3.8->textblob) (8.1.7)
Requirement already satisfied: joblib in d:\anaconda\lib\site-packages (from nltk>=3.8->textblob) (1.4.2)
Requirement already satisfied: regex>=2021.8.3 in d:\anaconda\lib\site-packages (from nltk>=3.8->textblob) (2023.10.3)
Requirement already satisfied: tqdm in d:\anaconda\lib\site-packages (from nltk>=3.8->textblob) (4.66.4)
Requirement already satisfied: colorama in d:\anaconda\lib\site-packages (from click->nltk>=3.8->textblob) (0.4.6)
Using cached textblob-0.18.0.post0-py3-none-any.whl (626 kB)
Installing collected packages: textblob
Successfully installed textblob-0.18.0.post0
In [25]:
import pandas as pd
from textblob import TextBlob

# Sample data to create the DataFrame with matching lengths
data = {
    'Date': [
        '2024-09-01', '2024-09-02', '2024-09-03',
        '2024-09-04', '2024-09-05', '2024-09-06',
        '2024-09-07', '2024-09-08'
    ],
    'content': [
        'Global markets are volatile due to geopolitical tensions.',
        'The new trade agreement has boosted market confidence.',
        'Political instability in some regions is causing concerns.',
        'The geopolitical situation is worsening rapidly.',
        'There are some signs of diplomatic efforts yielding results.',
        'The peace talks have broken down, leading to more uncertainty.',
        'Economic sanctions are being lifted as relations improve.',
        'Tensions are rising again as negotiations stall.'
    ]
}

# Creating the DataFrame
df_news = pd.DataFrame(data)

# Converting the 'Date' column to datetime
df_news['Date'] = pd.to_datetime(df_news['Date'])

# Applying sentiment analysis to the 'content' column
df_news['sentiment'] = df_news['content'].apply(lambda x: TextBlob(x).sentiment.polarity)

# Display the DataFrame to ensure it is correctly defined
print(df_news)
        Date                                            content  sentiment
0 2024-09-01  Global markets are volatile due to geopolitica...  -0.062500
1 2024-09-02  The new trade agreement has boosted market con...   0.136364
2 2024-09-03  Political instability in some regions is causi...   0.000000
3 2024-09-04   The geopolitical situation is worsening rapidly.   0.000000
4 2024-09-05  There are some signs of diplomatic efforts yie...   0.000000
5 2024-09-06  The peace talks have broken down, leading to m...  -0.018519
6 2024-09-07  Economic sanctions are being lifted as relatio...   0.200000
7 2024-09-08   Tensions are rising again as negotiations stall.   0.000000

Topic Modeling of News Articles¶

In [26]:
from sklearn.decomposition import LatentDirichletAllocation as LDA

# Vectorize the news content
tfidf_vectorizer = TfidfVectorizer(max_features=5000)
tfidf_matrix = tfidf_vectorizer.fit_transform(df_news['content'])

# Apply LDA
lda = LDA(n_components=10, random_state=42)
lda.fit(tfidf_matrix)

# Display topics
for i, topic in enumerate(lda.components_):
    print(f"Topic {i}:")
    print([tfidf_vectorizer.get_feature_names_out()[index] for index in topic.argsort()[-10:]])
Topic 0:
['some', 'the', 'are', 'as', 'lifted', 'relations', 'improve', 'being', 'economic', 'sanctions']
Topic 1:
['market', 'trade', 'tensions', 'as', 'to', 'geopolitical', 'is', 'some', 'the', 'are']
Topic 2:
['the', 'to', 'down', 'talks', 'peace', 'more', 'have', 'uncertainty', 'leading', 'broken']
Topic 3:
['agreement', 'market', 'boosted', 'has', 'causing', 'instability', 'regions', 'political', 'in', 'concerns']
Topic 4:
['market', 'trade', 'tensions', 'as', 'to', 'geopolitical', 'is', 'some', 'the', 'are']
Topic 5:
['market', 'trade', 'tensions', 'as', 'to', 'geopolitical', 'is', 'some', 'the', 'are']
Topic 6:
['is', 'some', 'the', 'are', 'tensions', 'as', 'rising', 'negotiations', 'stall', 'again']
Topic 7:
['market', 'trade', 'tensions', 'as', 'to', 'geopolitical', 'is', 'some', 'the', 'are']
Topic 8:
['some', 'the', 'are', 'tensions', 'geopolitical', 'to', 'due', 'global', 'volatile', 'markets']
Topic 9:
['signs', 'results', 'efforts', 'diplomatic', 'yielding', 'geopolitical', 'is', 'rapidly', 'worsening', 'situation']

Clustering of Tension Hotspots¶

In [27]:
import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
import numpy as np

# Create a sample DataFrame with missing 'Latitude' and 'Longitude' columns for demonstration
data = {
    'Tension_Level': [1, 2, 3, 4, 5, 6, 7, 8],
    # Missing 'Latitude' and 'Longitude' columns initially
}
df_tension = pd.DataFrame(data)

# Display the DataFrame to check its contents
print("Initial DataFrame:")
print(df_tension)

# Check if 'Latitude' and 'Longitude' columns are in the DataFrame
required_columns = ['Latitude', 'Longitude', 'Tension_Level']
missing_columns = [col for col in required_columns if col not in df_tension.columns]

# If missing columns are found, add them with default values (for demonstration)
if missing_columns:
    for col in missing_columns:
        # Add missing columns with dummy data (e.g., random values)
        df_tension[col] = np.random.rand(len(df_tension)) * 100  # Example random values

# Display the DataFrame after adding missing columns
print("\nDataFrame after adding missing columns:")
print(df_tension)

# Apply KMeans clustering
X = df_tension[['Latitude', 'Longitude', 'Tension_Level']]
kmeans = KMeans(n_clusters=5, random_state=42)
df_tension['Cluster'] = kmeans.fit_predict(X)

# Plot clusters on a scatter plot (without map visualization)
plt.scatter(df_tension['Longitude'], df_tension['Latitude'], c=df_tension['Cluster'], cmap='viridis')
plt.title('Geopolitical Tension Hotspots Clustering')
plt.xlabel('Longitude')
plt.ylabel('Latitude')
plt.show()
Initial DataFrame:
   Tension_Level
0              1
1              2
2              3
3              4
4              5
5              6
6              7
7              8

DataFrame after adding missing columns:
   Tension_Level   Latitude  Longitude
0              1  74.022796  46.957850
1              2  57.597434  69.944491
2              3  24.201287  48.045599
3              4  99.581394  93.810142
4              5  18.264367  59.720678
5              6  59.958399  61.600248
6              7   8.613933   3.604355
7              8  40.893355  39.199866
D:\Anaconda\Lib\site-packages\sklearn\cluster\_kmeans.py:1446: UserWarning:

KMeans is known to have a memory leak on Windows with MKL, when there are less chunks than available threads. You can avoid it by setting the environment variable OMP_NUM_THREADS=1.

No description has been provided for this image

Correlation Analysis of Tensions and Military Movements¶

In [28]:
import pandas as pd
import numpy as np

# Sample data creation
data = {
    'date': pd.date_range(start='1/1/2023', periods=10),
    'geopolitical_tension_index': np.random.randint(50, 100, size=10),
    'military_movement_index': np.random.randint(10, 50, size=10)
}

df = pd.DataFrame(data)

# Correlation Analysis
correlation = df['geopolitical_tension_index'].corr(df['military_movement_index'])
print("Correlation between geopolitical tensions and military movements:", correlation)
Correlation between geopolitical tensions and military movements: 0.33545489027815906

Prediction of Future Geopolitical Tensions¶

In [29]:
from sklearn.linear_model import LinearRegression

# Example data
X = np.array(df.index).reshape(-1, 1)  # Features: time
y = df['geopolitical_tension_index']    # Target: tension index

# Linear Regression Model
model = LinearRegression()
model.fit(X, y)

# Predict future tension index
future_index = np.array([len(df) + i for i in range(1, 6)]).reshape(-1, 1)
predicted_tensions = model.predict(future_index)
print("Predicted geopolitical tensions:", predicted_tensions)
Predicted geopolitical tensions: [78.95757576 79.38181818 79.80606061 80.23030303 80.65454545]

Visualization of Predicted Tension Hotspots¶

In [30]:
import matplotlib.pyplot as plt

# Plotting Tension Hotspots
plt.plot(df['date'], df['geopolitical_tension_index'], label='Historical Tensions')
plt.plot(pd.date_range(start=df['date'].iloc[-1], periods=6, freq='D')[1:], predicted_tensions, label='Predicted Tensions', linestyle='--')
plt.legend()
plt.title("Geopolitical Tension Hotspots")
plt.xlabel("Date")
plt.ylabel("Tension Index")
plt.show()
No description has been provided for this image

Dynamic Dashboard Creation for Monitoring¶

In [32]:
pip install dash
Collecting dash
  Downloading dash-2.17.1-py3-none-any.whl.metadata (10 kB)
Requirement already satisfied: Flask<3.1,>=1.0.4 in d:\anaconda\lib\site-packages (from dash) (3.0.3)
Requirement already satisfied: Werkzeug<3.1 in d:\anaconda\lib\site-packages (from dash) (3.0.3)
Requirement already satisfied: plotly>=5.0.0 in d:\anaconda\lib\site-packages (from dash) (5.22.0)
Collecting dash-html-components==2.0.0 (from dash)
  Downloading dash_html_components-2.0.0-py3-none-any.whl.metadata (3.8 kB)
Collecting dash-core-components==2.0.0 (from dash)
  Downloading dash_core_components-2.0.0-py3-none-any.whl.metadata (2.9 kB)
Collecting dash-table==5.0.0 (from dash)
  Downloading dash_table-5.0.0-py3-none-any.whl.metadata (2.4 kB)
Requirement already satisfied: importlib-metadata in d:\anaconda\lib\site-packages (from dash) (7.0.1)
Requirement already satisfied: typing-extensions>=4.1.1 in d:\anaconda\lib\site-packages (from dash) (4.11.0)
Requirement already satisfied: requests in d:\anaconda\lib\site-packages (from dash) (2.32.2)
Collecting retrying (from dash)
  Downloading retrying-1.3.4-py3-none-any.whl.metadata (6.9 kB)
Requirement already satisfied: nest-asyncio in d:\anaconda\lib\site-packages (from dash) (1.6.0)
Requirement already satisfied: setuptools in d:\anaconda\lib\site-packages (from dash) (69.5.1)
Requirement already satisfied: Jinja2>=3.1.2 in d:\anaconda\lib\site-packages (from Flask<3.1,>=1.0.4->dash) (3.1.4)
Requirement already satisfied: itsdangerous>=2.1.2 in d:\anaconda\lib\site-packages (from Flask<3.1,>=1.0.4->dash) (2.2.0)
Requirement already satisfied: click>=8.1.3 in d:\anaconda\lib\site-packages (from Flask<3.1,>=1.0.4->dash) (8.1.7)
Requirement already satisfied: blinker>=1.6.2 in d:\anaconda\lib\site-packages (from Flask<3.1,>=1.0.4->dash) (1.6.2)
Requirement already satisfied: tenacity>=6.2.0 in d:\anaconda\lib\site-packages (from plotly>=5.0.0->dash) (8.2.2)
Requirement already satisfied: packaging in d:\anaconda\lib\site-packages (from plotly>=5.0.0->dash) (23.2)
Requirement already satisfied: MarkupSafe>=2.1.1 in d:\anaconda\lib\site-packages (from Werkzeug<3.1->dash) (2.1.3)
Requirement already satisfied: zipp>=0.5 in d:\anaconda\lib\site-packages (from importlib-metadata->dash) (3.17.0)
Requirement already satisfied: charset-normalizer<4,>=2 in d:\anaconda\lib\site-packages (from requests->dash) (2.0.4)
Requirement already satisfied: idna<4,>=2.5 in d:\anaconda\lib\site-packages (from requests->dash) (3.7)
Requirement already satisfied: urllib3<3,>=1.21.1 in d:\anaconda\lib\site-packages (from requests->dash) (2.2.2)
Requirement already satisfied: certifi>=2017.4.17 in d:\anaconda\lib\site-packages (from requests->dash) (2024.6.2)
Requirement already satisfied: six>=1.7.0 in d:\anaconda\lib\site-packages (from retrying->dash) (1.16.0)
Requirement already satisfied: colorama in d:\anaconda\lib\site-packages (from click>=8.1.3->Flask<3.1,>=1.0.4->dash) (0.4.6)
Downloading dash-2.17.1-py3-none-any.whl (7.5 MB)
   ---------------------------------------- 0.0/7.5 MB ? eta -:--:--
   ---------------------------------------- 0.0/7.5 MB ? eta -:--:--
   ---------------------------------------- 0.0/7.5 MB 495.5 kB/s eta 0:00:16
   ---------------------------------------- 0.1/7.5 MB 751.6 kB/s eta 0:00:10
    --------------------------------------- 0.2/7.5 MB 984.6 kB/s eta 0:00:08
   - -------------------------------------- 0.2/7.5 MB 986.4 kB/s eta 0:00:08
   - -------------------------------------- 0.3/7.5 MB 1.1 MB/s eta 0:00:07
   - -------------------------------------- 0.3/7.5 MB 1.1 MB/s eta 0:00:07
   -- ------------------------------------- 0.4/7.5 MB 1.1 MB/s eta 0:00:07
   -- ------------------------------------- 0.5/7.5 MB 1.1 MB/s eta 0:00:07
   -- ------------------------------------- 0.5/7.5 MB 1.1 MB/s eta 0:00:07
   -- ------------------------------------- 0.5/7.5 MB 1.0 MB/s eta 0:00:07
   -- ------------------------------------- 0.5/7.5 MB 1.0 MB/s eta 0:00:07
   -- ------------------------------------- 0.5/7.5 MB 1.0 MB/s eta 0:00:07
   --- ------------------------------------ 0.6/7.5 MB 992.1 kB/s eta 0:00:07
   --- ------------------------------------ 0.7/7.5 MB 1.0 MB/s eta 0:00:07
   --- ------------------------------------ 0.7/7.5 MB 1.0 MB/s eta 0:00:07
   ---- ----------------------------------- 0.8/7.5 MB 1.0 MB/s eta 0:00:07
   ---- ----------------------------------- 0.8/7.5 MB 1.0 MB/s eta 0:00:07
   ---- ----------------------------------- 0.9/7.5 MB 1.0 MB/s eta 0:00:07
   ----- ---------------------------------- 1.0/7.5 MB 1.0 MB/s eta 0:00:07
   ----- ---------------------------------- 1.0/7.5 MB 1.0 MB/s eta 0:00:07
   ----- ---------------------------------- 1.1/7.5 MB 1.1 MB/s eta 0:00:07
   ------ --------------------------------- 1.2/7.5 MB 1.1 MB/s eta 0:00:06
   ------ --------------------------------- 1.2/7.5 MB 1.1 MB/s eta 0:00:06
   ------ --------------------------------- 1.3/7.5 MB 1.1 MB/s eta 0:00:06
   ------- -------------------------------- 1.3/7.5 MB 1.1 MB/s eta 0:00:06
   ------- -------------------------------- 1.4/7.5 MB 1.1 MB/s eta 0:00:06
   ------- -------------------------------- 1.4/7.5 MB 1.1 MB/s eta 0:00:06
   -------- ------------------------------- 1.5/7.5 MB 1.1 MB/s eta 0:00:06
   -------- ------------------------------- 1.6/7.5 MB 1.1 MB/s eta 0:00:06
   -------- ------------------------------- 1.6/7.5 MB 1.1 MB/s eta 0:00:06
   --------- ------------------------------ 1.7/7.5 MB 1.1 MB/s eta 0:00:06
   --------- ------------------------------ 1.8/7.5 MB 1.1 MB/s eta 0:00:06
   --------- ------------------------------ 1.8/7.5 MB 1.1 MB/s eta 0:00:06
   --------- ------------------------------ 1.9/7.5 MB 1.1 MB/s eta 0:00:05
   ---------- ----------------------------- 1.9/7.5 MB 1.1 MB/s eta 0:00:05
   ---------- ----------------------------- 2.0/7.5 MB 1.1 MB/s eta 0:00:05
   ---------- ----------------------------- 2.0/7.5 MB 1.1 MB/s eta 0:00:05
   ----------- ---------------------------- 2.1/7.5 MB 1.1 MB/s eta 0:00:05
   ----------- ---------------------------- 2.2/7.5 MB 1.1 MB/s eta 0:00:05
   ----------- ---------------------------- 2.2/7.5 MB 1.1 MB/s eta 0:00:05
   ------------ --------------------------- 2.3/7.5 MB 1.1 MB/s eta 0:00:05
   ------------ --------------------------- 2.3/7.5 MB 1.1 MB/s eta 0:00:05
   ------------ --------------------------- 2.4/7.5 MB 1.2 MB/s eta 0:00:05
   ------------- -------------------------- 2.5/7.5 MB 1.1 MB/s eta 0:00:05
   ------------- -------------------------- 2.5/7.5 MB 1.2 MB/s eta 0:00:05
   ------------- -------------------------- 2.6/7.5 MB 1.1 MB/s eta 0:00:05
   -------------- ------------------------- 2.6/7.5 MB 1.1 MB/s eta 0:00:05
   -------------- ------------------------- 2.7/7.5 MB 1.2 MB/s eta 0:00:05
   -------------- ------------------------- 2.8/7.5 MB 1.2 MB/s eta 0:00:05
   --------------- ------------------------ 2.8/7.5 MB 1.2 MB/s eta 0:00:05
   --------------- ------------------------ 2.9/7.5 MB 1.2 MB/s eta 0:00:04
   --------------- ------------------------ 2.9/7.5 MB 1.2 MB/s eta 0:00:04
   ---------------- ----------------------- 3.0/7.5 MB 1.2 MB/s eta 0:00:04
   ---------------- ----------------------- 3.1/7.5 MB 1.2 MB/s eta 0:00:04
   ---------------- ----------------------- 3.1/7.5 MB 1.2 MB/s eta 0:00:04
   ----------------- ---------------------- 3.2/7.5 MB 1.2 MB/s eta 0:00:04
   ----------------- ---------------------- 3.2/7.5 MB 1.2 MB/s eta 0:00:04
   ----------------- ---------------------- 3.3/7.5 MB 1.2 MB/s eta 0:00:04
   ----------------- ---------------------- 3.4/7.5 MB 1.2 MB/s eta 0:00:04
   ------------------ --------------------- 3.4/7.5 MB 1.2 MB/s eta 0:00:04
   ------------------ --------------------- 3.5/7.5 MB 1.2 MB/s eta 0:00:04
   ------------------ --------------------- 3.5/7.5 MB 1.2 MB/s eta 0:00:04
   ------------------- -------------------- 3.6/7.5 MB 1.2 MB/s eta 0:00:04
   ------------------- -------------------- 3.7/7.5 MB 1.2 MB/s eta 0:00:04
   ------------------- -------------------- 3.7/7.5 MB 1.2 MB/s eta 0:00:04
   -------------------- ------------------- 3.8/7.5 MB 1.2 MB/s eta 0:00:04
   -------------------- ------------------- 3.9/7.5 MB 1.2 MB/s eta 0:00:03
   --------------------- ------------------ 4.0/7.5 MB 1.2 MB/s eta 0:00:03
   --------------------- ------------------ 4.1/7.5 MB 1.2 MB/s eta 0:00:03
   ---------------------- ----------------- 4.1/7.5 MB 1.2 MB/s eta 0:00:03
   ---------------------- ----------------- 4.2/7.5 MB 1.2 MB/s eta 0:00:03
   ---------------------- ----------------- 4.3/7.5 MB 1.2 MB/s eta 0:00:03
   ----------------------- ---------------- 4.4/7.5 MB 1.2 MB/s eta 0:00:03
   ----------------------- ---------------- 4.4/7.5 MB 1.2 MB/s eta 0:00:03
   ----------------------- ---------------- 4.5/7.5 MB 1.2 MB/s eta 0:00:03
   ------------------------ --------------- 4.5/7.5 MB 1.2 MB/s eta 0:00:03
   ------------------------ --------------- 4.6/7.5 MB 1.2 MB/s eta 0:00:03
   ------------------------- -------------- 4.7/7.5 MB 1.2 MB/s eta 0:00:03
   ------------------------- -------------- 4.7/7.5 MB 1.2 MB/s eta 0:00:03
   ------------------------- -------------- 4.8/7.5 MB 1.2 MB/s eta 0:00:03
   -------------------------- ------------- 4.9/7.5 MB 1.2 MB/s eta 0:00:03
   -------------------------- ------------- 5.0/7.5 MB 1.2 MB/s eta 0:00:03
   --------------------------- ------------ 5.1/7.5 MB 1.2 MB/s eta 0:00:02
   --------------------------- ------------ 5.1/7.5 MB 1.2 MB/s eta 0:00:02
   --------------------------- ------------ 5.2/7.5 MB 1.2 MB/s eta 0:00:02
   ---------------------------- ----------- 5.3/7.5 MB 1.3 MB/s eta 0:00:02
   ---------------------------- ----------- 5.3/7.5 MB 1.3 MB/s eta 0:00:02
   ---------------------------- ----------- 5.4/7.5 MB 1.3 MB/s eta 0:00:02
   ----------------------------- ---------- 5.5/7.5 MB 1.3 MB/s eta 0:00:02
   ----------------------------- ---------- 5.6/7.5 MB 1.3 MB/s eta 0:00:02
   ----------------------------- ---------- 5.6/7.5 MB 1.3 MB/s eta 0:00:02
   ------------------------------ --------- 5.7/7.5 MB 1.3 MB/s eta 0:00:02
   ------------------------------ --------- 5.7/7.5 MB 1.3 MB/s eta 0:00:02
   ------------------------------- -------- 5.8/7.5 MB 1.3 MB/s eta 0:00:02
   ------------------------------- -------- 5.9/7.5 MB 1.3 MB/s eta 0:00:02
   ------------------------------- -------- 6.0/7.5 MB 1.3 MB/s eta 0:00:02
   -------------------------------- ------- 6.0/7.5 MB 1.3 MB/s eta 0:00:02
   -------------------------------- ------- 6.1/7.5 MB 1.3 MB/s eta 0:00:02
   --------------------------------- ------ 6.2/7.5 MB 1.3 MB/s eta 0:00:02
   --------------------------------- ------ 6.3/7.5 MB 1.3 MB/s eta 0:00:01
   --------------------------------- ------ 6.3/7.5 MB 1.3 MB/s eta 0:00:01
   ---------------------------------- ----- 6.5/7.5 MB 1.3 MB/s eta 0:00:01
   ----------------------------------- ---- 6.6/7.5 MB 1.3 MB/s eta 0:00:01
   ----------------------------------- ---- 6.7/7.5 MB 1.3 MB/s eta 0:00:01
   ------------------------------------ --- 6.8/7.5 MB 1.3 MB/s eta 0:00:01
   ------------------------------------ --- 6.9/7.5 MB 1.3 MB/s eta 0:00:01
   ------------------------------------- -- 7.0/7.5 MB 1.3 MB/s eta 0:00:01
   ------------------------------------- -- 7.1/7.5 MB 1.3 MB/s eta 0:00:01
   -------------------------------------- - 7.2/7.5 MB 1.3 MB/s eta 0:00:01
   ---------------------------------------  7.3/7.5 MB 1.4 MB/s eta 0:00:01
   ---------------------------------------  7.4/7.5 MB 1.4 MB/s eta 0:00:01
   ---------------------------------------  7.5/7.5 MB 1.4 MB/s eta 0:00:01
   ---------------------------------------- 7.5/7.5 MB 1.4 MB/s eta 0:00:00
Downloading dash_core_components-2.0.0-py3-none-any.whl (3.8 kB)
Downloading dash_html_components-2.0.0-py3-none-any.whl (4.1 kB)
Downloading dash_table-5.0.0-py3-none-any.whl (3.9 kB)
Downloading retrying-1.3.4-py3-none-any.whl (11 kB)
Installing collected packages: dash-table, dash-html-components, dash-core-components, retrying, dash
Successfully installed dash-2.17.1 dash-core-components-2.0.0 dash-html-components-2.0.0 dash-table-5.0.0 retrying-1.3.4
Note: you may need to restart the kernel to use updated packages.
In [19]:
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
import pandas as pd

# Sample data for demonstration
df = pd.DataFrame({
    'date': pd.date_range(start='1/1/2023', periods=100),
    'geopolitical_tension_index': range(100)
})

app = dash.Dash(__name__)

app.layout = html.Div([
    html.H1("Geopolitical Tension Monitoring Dashboard"),
    dcc.Graph(id='tension-graph'),
    dcc.Interval(id='interval-component', interval=1000, n_intervals=0)
])

@app.callback(
    Output('tension-graph', 'figure'),
    [Input('interval-component', 'n_intervals')]
)
def update_graph(n):
    fig = {
        'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        'layout': {'title': 'Geopolitical Tensions Over Time'}
    }
    return fig

if __name__ == '__main__':
    app.run_server(debug=True)
C:\Users\pradu\AppData\Local\Temp\ipykernel_12248\1980176262.py:2: UserWarning: 
The dash_core_components package is deprecated. Please replace
`import dash_core_components as dcc` with `from dash import dcc`
  import dash_core_components as dcc
C:\Users\pradu\AppData\Local\Temp\ipykernel_12248\1980176262.py:3: UserWarning: 
The dash_html_components package is deprecated. Please replace
`import dash_html_components as html` with `from dash import html`
  import dash_html_components as html

Integration with Real-Time News Feeds¶

In [34]:
# Simulated real-time news feed data (in practice, would use an API)
news_feed = [
    "Tension rises between countries A and B.",
    "Military buildup observed near border of country C.",
    "Peace talks successful in region X."
]

print("News Feed : ", news_feed)

# Sentiment Analysis on news feed
from textblob import TextBlob

def analyze_sentiment(news):
    sentiment = TextBlob(news).sentiment.polarity
    return sentiment

sentiments = [analyze_sentiment(news) for news in news_feed]
print("\nSentiments of news feed:", sentiments)
News Feed :  ['Tension rises between countries A and B.', 'Military buildup observed near border of country C.', 'Peace talks successful in region X.']

Sentiments of news feed: [0.0, 0.0, 0.75]

Anomaly Detection in Military Base Activity¶

In [35]:
from sklearn.ensemble import IsolationForest

# Sample data for military base activity
military_activity = np.random.normal(100, 10, 100).tolist() + [200, 250]  # adding anomalies
df_activity = pd.DataFrame({'activity_level': military_activity})

# Anomaly Detection Model
iso_forest = IsolationForest(contamination=0.05)
df_activity['anomaly'] = iso_forest.fit_predict(df_activity[['activity_level']])
anomalies = df_activity[df_activity['anomaly'] == -1]

print("Anomalies in military base activity:", anomalies)
Anomalies in military base activity:      activity_level  anomaly
1        128.675044       -1
15        76.892433       -1
26        76.058342       -1
89        79.962977       -1
100      200.000000       -1
101      250.000000       -1

Heatmap of Tension Intensity Over Time¶

In [36]:
import seaborn as sns

# Sample tension data
tension_matrix = np.random.rand(10, 10) * 100

# Heatmap Visualization
sns.heatmap(tension_matrix, annot=True, cmap="YlGnBu")
plt.title("Heatmap of Tension Intensity Over Time")
plt.show()
No description has been provided for this image

Trend Analysis of Defense Expenditure¶

In [37]:
# Sample data
df_expenditure = pd.DataFrame({
    'year': np.arange(2010, 2020),
    'defense_expenditure': np.random.randint(100, 500, 10)
})

# Trend Analysis
df_expenditure['rolling_avg'] = df_expenditure['defense_expenditure'].rolling(window=3).mean()
df_expenditure.plot(x='year', y=['defense_expenditure', 'rolling_avg'])
plt.title("Trend Analysis of Defense Expenditure")
plt.show()
No description has been provided for this image

Mapping of International Military Bases¶

In [39]:
pip install geopandas
Collecting geopandas
  Using cached geopandas-1.0.1-py3-none-any.whl.metadata (2.2 kB)
Requirement already satisfied: numpy>=1.22 in d:\anaconda\lib\site-packages (from geopandas) (1.26.4)
Collecting pyogrio>=0.7.2 (from geopandas)
  Using cached pyogrio-0.9.0-cp312-cp312-win_amd64.whl.metadata (3.9 kB)
Requirement already satisfied: packaging in d:\anaconda\lib\site-packages (from geopandas) (23.2)
Requirement already satisfied: pandas>=1.4.0 in d:\anaconda\lib\site-packages (from geopandas) (2.2.2)
Collecting pyproj>=3.3.0 (from geopandas)
  Using cached pyproj-3.6.1-cp312-cp312-win_amd64.whl.metadata (31 kB)
Collecting shapely>=2.0.0 (from geopandas)
  Using cached shapely-2.0.6-cp312-cp312-win_amd64.whl.metadata (7.2 kB)
Requirement already satisfied: python-dateutil>=2.8.2 in d:\anaconda\lib\site-packages (from pandas>=1.4.0->geopandas) (2.9.0.post0)
Requirement already satisfied: pytz>=2020.1 in d:\anaconda\lib\site-packages (from pandas>=1.4.0->geopandas) (2024.1)
Requirement already satisfied: tzdata>=2022.7 in d:\anaconda\lib\site-packages (from pandas>=1.4.0->geopandas) (2023.3)
Requirement already satisfied: certifi in d:\anaconda\lib\site-packages (from pyogrio>=0.7.2->geopandas) (2024.6.2)
Requirement already satisfied: six>=1.5 in d:\anaconda\lib\site-packages (from python-dateutil>=2.8.2->pandas>=1.4.0->geopandas) (1.16.0)
Using cached geopandas-1.0.1-py3-none-any.whl (323 kB)
Downloading pyogrio-0.9.0-cp312-cp312-win_amd64.whl (15.9 MB)
   ---------------------------------------- 0.0/15.9 MB ? eta -:--:--
   ---------------------------------------- 0.0/15.9 MB ? eta -:--:--
   ---------------------------------------- 0.0/15.9 MB 217.9 kB/s eta 0:01:13
   ---------------------------------------- 0.0/15.9 MB 217.9 kB/s eta 0:01:13
   ---------------------------------------- 0.1/15.9 MB 363.1 kB/s eta 0:00:44
   ---------------------------------------- 0.1/15.9 MB 599.1 kB/s eta 0:00:27
    --------------------------------------- 0.2/15.9 MB 888.4 kB/s eta 0:00:18
    --------------------------------------- 0.3/15.9 MB 1.1 MB/s eta 0:00:15
   - -------------------------------------- 0.4/15.9 MB 1.3 MB/s eta 0:00:12
   - -------------------------------------- 0.5/15.9 MB 1.5 MB/s eta 0:00:11
   - -------------------------------------- 0.7/15.9 MB 1.6 MB/s eta 0:00:10
   -- ------------------------------------- 0.8/15.9 MB 1.7 MB/s eta 0:00:09
   -- ------------------------------------- 0.9/15.9 MB 1.8 MB/s eta 0:00:09
   -- ------------------------------------- 1.0/15.9 MB 1.9 MB/s eta 0:00:08
   -- ------------------------------------- 1.1/15.9 MB 1.9 MB/s eta 0:00:08
   -- ------------------------------------- 1.1/15.9 MB 1.9 MB/s eta 0:00:08
   --- ------------------------------------ 1.2/15.9 MB 1.8 MB/s eta 0:00:08
   --- ------------------------------------ 1.4/15.9 MB 1.9 MB/s eta 0:00:08
   --- ------------------------------------ 1.4/15.9 MB 1.9 MB/s eta 0:00:08
   --- ------------------------------------ 1.5/15.9 MB 1.8 MB/s eta 0:00:08
   --- ------------------------------------ 1.5/15.9 MB 1.8 MB/s eta 0:00:09
   --- ------------------------------------ 1.6/15.9 MB 1.7 MB/s eta 0:00:09
   ---- ----------------------------------- 1.8/15.9 MB 1.9 MB/s eta 0:00:08
   ---- ----------------------------------- 1.9/15.9 MB 1.9 MB/s eta 0:00:08
   ----- ---------------------------------- 2.1/15.9 MB 2.0 MB/s eta 0:00:08
   ----- ---------------------------------- 2.2/15.9 MB 2.0 MB/s eta 0:00:07
   ----- ---------------------------------- 2.3/15.9 MB 2.0 MB/s eta 0:00:07
   ----- ---------------------------------- 2.4/15.9 MB 2.0 MB/s eta 0:00:07
   ------ --------------------------------- 2.5/15.9 MB 2.0 MB/s eta 0:00:07
   ------ --------------------------------- 2.6/15.9 MB 2.0 MB/s eta 0:00:07
   ------ --------------------------------- 2.7/15.9 MB 2.0 MB/s eta 0:00:07
   ------- -------------------------------- 2.8/15.9 MB 2.0 MB/s eta 0:00:07
   ------- -------------------------------- 2.9/15.9 MB 2.1 MB/s eta 0:00:07
   ------- -------------------------------- 3.0/15.9 MB 2.1 MB/s eta 0:00:07
   ------- -------------------------------- 3.2/15.9 MB 2.1 MB/s eta 0:00:07
   -------- ------------------------------- 3.3/15.9 MB 2.1 MB/s eta 0:00:07
   -------- ------------------------------- 3.4/15.9 MB 2.1 MB/s eta 0:00:06
   -------- ------------------------------- 3.5/15.9 MB 2.1 MB/s eta 0:00:06
   --------- ------------------------------ 3.6/15.9 MB 2.1 MB/s eta 0:00:06
   --------- ------------------------------ 3.7/15.9 MB 2.1 MB/s eta 0:00:06
   --------- ------------------------------ 3.8/15.9 MB 2.1 MB/s eta 0:00:06
   --------- ------------------------------ 3.9/15.9 MB 2.2 MB/s eta 0:00:06
   ---------- ----------------------------- 4.0/15.9 MB 2.2 MB/s eta 0:00:06
   ---------- ----------------------------- 4.2/15.9 MB 2.2 MB/s eta 0:00:06
   ---------- ----------------------------- 4.3/15.9 MB 2.2 MB/s eta 0:00:06
   ----------- ---------------------------- 4.4/15.9 MB 2.2 MB/s eta 0:00:06
   ----------- ---------------------------- 4.5/15.9 MB 2.2 MB/s eta 0:00:06
   ----------- ---------------------------- 4.7/15.9 MB 2.2 MB/s eta 0:00:06
   ------------ --------------------------- 4.8/15.9 MB 2.2 MB/s eta 0:00:06
   ------------ --------------------------- 4.9/15.9 MB 2.2 MB/s eta 0:00:05
   ------------ --------------------------- 5.0/15.9 MB 2.2 MB/s eta 0:00:05
   ------------- -------------------------- 5.2/15.9 MB 2.2 MB/s eta 0:00:05
   ------------- -------------------------- 5.3/15.9 MB 2.2 MB/s eta 0:00:05
   ------------- -------------------------- 5.4/15.9 MB 2.3 MB/s eta 0:00:05
   ------------- -------------------------- 5.5/15.9 MB 2.3 MB/s eta 0:00:05
   -------------- ------------------------- 5.6/15.9 MB 2.3 MB/s eta 0:00:05
   -------------- ------------------------- 5.7/15.9 MB 2.3 MB/s eta 0:00:05
   -------------- ------------------------- 5.8/15.9 MB 2.3 MB/s eta 0:00:05
   --------------- ------------------------ 6.0/15.9 MB 2.3 MB/s eta 0:00:05
   --------------- ------------------------ 6.1/15.9 MB 2.3 MB/s eta 0:00:05
   --------------- ------------------------ 6.2/15.9 MB 2.3 MB/s eta 0:00:05
   --------------- ------------------------ 6.3/15.9 MB 2.3 MB/s eta 0:00:05
   ---------------- ----------------------- 6.4/15.9 MB 2.3 MB/s eta 0:00:05
   ---------------- ----------------------- 6.6/15.9 MB 2.3 MB/s eta 0:00:05
   ---------------- ----------------------- 6.7/15.9 MB 2.3 MB/s eta 0:00:05
   ----------------- ---------------------- 6.8/15.9 MB 2.3 MB/s eta 0:00:04
   ----------------- ---------------------- 7.0/15.9 MB 2.3 MB/s eta 0:00:04
   ----------------- ---------------------- 7.1/15.9 MB 2.3 MB/s eta 0:00:04
   ----------------- ---------------------- 7.1/15.9 MB 2.3 MB/s eta 0:00:04
   ------------------ --------------------- 7.2/15.9 MB 2.3 MB/s eta 0:00:04
   ------------------ --------------------- 7.2/15.9 MB 2.3 MB/s eta 0:00:04
   ------------------ --------------------- 7.3/15.9 MB 2.2 MB/s eta 0:00:04
   ------------------ --------------------- 7.4/15.9 MB 2.2 MB/s eta 0:00:04
   ------------------ --------------------- 7.4/15.9 MB 2.2 MB/s eta 0:00:04
   ------------------ --------------------- 7.5/15.9 MB 2.2 MB/s eta 0:00:04
   ------------------ --------------------- 7.5/15.9 MB 2.2 MB/s eta 0:00:04
   ------------------- -------------------- 7.6/15.9 MB 2.2 MB/s eta 0:00:04
   ------------------- -------------------- 7.6/15.9 MB 2.2 MB/s eta 0:00:04
   ------------------- -------------------- 7.7/15.9 MB 2.1 MB/s eta 0:00:04
   ------------------- -------------------- 7.7/15.9 MB 2.1 MB/s eta 0:00:04
   ------------------- -------------------- 7.8/15.9 MB 2.1 MB/s eta 0:00:04
   ------------------- -------------------- 7.8/15.9 MB 2.1 MB/s eta 0:00:04
   ------------------- -------------------- 7.9/15.9 MB 2.1 MB/s eta 0:00:04
   ------------------- -------------------- 7.9/15.9 MB 2.1 MB/s eta 0:00:04
   -------------------- ------------------- 8.0/15.9 MB 2.0 MB/s eta 0:00:04
   -------------------- ------------------- 8.0/15.9 MB 2.0 MB/s eta 0:00:04
   -------------------- ------------------- 8.1/15.9 MB 2.0 MB/s eta 0:00:04
   -------------------- ------------------- 8.1/15.9 MB 2.0 MB/s eta 0:00:04
   -------------------- ------------------- 8.2/15.9 MB 2.0 MB/s eta 0:00:04
   -------------------- ------------------- 8.2/15.9 MB 2.0 MB/s eta 0:00:04
   -------------------- ------------------- 8.3/15.9 MB 2.0 MB/s eta 0:00:04
   --------------------- ------------------ 8.4/15.9 MB 2.0 MB/s eta 0:00:04
   --------------------- ------------------ 8.4/15.9 MB 2.0 MB/s eta 0:00:04
   --------------------- ------------------ 8.5/15.9 MB 2.0 MB/s eta 0:00:04
   --------------------- ------------------ 8.5/15.9 MB 2.0 MB/s eta 0:00:04
   --------------------- ------------------ 8.6/15.9 MB 1.9 MB/s eta 0:00:04
   --------------------- ------------------ 8.7/15.9 MB 1.9 MB/s eta 0:00:04
   --------------------- ------------------ 8.7/15.9 MB 1.9 MB/s eta 0:00:04
   ---------------------- ----------------- 8.8/15.9 MB 1.9 MB/s eta 0:00:04
   ---------------------- ----------------- 8.8/15.9 MB 1.9 MB/s eta 0:00:04
   ---------------------- ----------------- 8.9/15.9 MB 1.9 MB/s eta 0:00:04
   ---------------------- ----------------- 9.0/15.9 MB 1.9 MB/s eta 0:00:04
   ---------------------- ----------------- 9.1/15.9 MB 1.9 MB/s eta 0:00:04
   ----------------------- ---------------- 9.2/15.9 MB 1.9 MB/s eta 0:00:04
   ----------------------- ---------------- 9.3/15.9 MB 1.9 MB/s eta 0:00:04
   ----------------------- ---------------- 9.4/15.9 MB 1.9 MB/s eta 0:00:04
   ------------------------ --------------- 9.6/15.9 MB 1.9 MB/s eta 0:00:04
   ------------------------ --------------- 9.7/15.9 MB 1.9 MB/s eta 0:00:04
   ------------------------ --------------- 9.8/15.9 MB 2.0 MB/s eta 0:00:04
   ------------------------ --------------- 9.9/15.9 MB 2.0 MB/s eta 0:00:04
   ------------------------- -------------- 10.0/15.9 MB 2.0 MB/s eta 0:00:04
   ------------------------- -------------- 10.1/15.9 MB 2.0 MB/s eta 0:00:03
   ------------------------- -------------- 10.2/15.9 MB 2.0 MB/s eta 0:00:03
   ------------------------- -------------- 10.3/15.9 MB 2.0 MB/s eta 0:00:03
   -------------------------- ------------- 10.4/15.9 MB 2.0 MB/s eta 0:00:03
   -------------------------- ------------- 10.6/15.9 MB 2.0 MB/s eta 0:00:03
   -------------------------- ------------- 10.6/15.9 MB 2.0 MB/s eta 0:00:03
   --------------------------- ------------ 10.8/15.9 MB 2.0 MB/s eta 0:00:03
   --------------------------- ------------ 10.9/15.9 MB 2.0 MB/s eta 0:00:03
   --------------------------- ------------ 11.0/15.9 MB 2.0 MB/s eta 0:00:03
   --------------------------- ------------ 11.1/15.9 MB 2.0 MB/s eta 0:00:03
   ---------------------------- ----------- 11.2/15.9 MB 2.0 MB/s eta 0:00:03
   ---------------------------- ----------- 11.3/15.9 MB 2.0 MB/s eta 0:00:03
   ---------------------------- ----------- 11.4/15.9 MB 2.0 MB/s eta 0:00:03
   ---------------------------- ----------- 11.5/15.9 MB 2.0 MB/s eta 0:00:03
   ----------------------------- ---------- 11.6/15.9 MB 2.0 MB/s eta 0:00:03
   ----------------------------- ---------- 11.7/15.9 MB 2.0 MB/s eta 0:00:03
   ----------------------------- ---------- 11.8/15.9 MB 2.1 MB/s eta 0:00:02
   ----------------------------- ---------- 11.9/15.9 MB 2.1 MB/s eta 0:00:02
   ------------------------------ --------- 12.0/15.9 MB 2.0 MB/s eta 0:00:02
   ------------------------------ --------- 12.1/15.9 MB 2.0 MB/s eta 0:00:02
   ------------------------------ --------- 12.3/15.9 MB 2.0 MB/s eta 0:00:02
   ------------------------------- -------- 12.4/15.9 MB 2.0 MB/s eta 0:00:02
   ------------------------------- -------- 12.5/15.9 MB 2.0 MB/s eta 0:00:02
   ------------------------------- -------- 12.6/15.9 MB 2.1 MB/s eta 0:00:02
   ------------------------------- -------- 12.7/15.9 MB 2.1 MB/s eta 0:00:02
   -------------------------------- ------- 12.8/15.9 MB 2.1 MB/s eta 0:00:02
   -------------------------------- ------- 12.9/15.9 MB 2.0 MB/s eta 0:00:02
   -------------------------------- ------- 13.0/15.9 MB 2.0 MB/s eta 0:00:02
   -------------------------------- ------- 13.1/15.9 MB 2.0 MB/s eta 0:00:02
   --------------------------------- ------ 13.2/15.9 MB 2.1 MB/s eta 0:00:02
   --------------------------------- ------ 13.3/15.9 MB 2.0 MB/s eta 0:00:02
   --------------------------------- ------ 13.4/15.9 MB 2.1 MB/s eta 0:00:02
   ---------------------------------- ----- 13.6/15.9 MB 2.0 MB/s eta 0:00:02
   ---------------------------------- ----- 13.7/15.9 MB 2.1 MB/s eta 0:00:02
   ---------------------------------- ----- 13.9/15.9 MB 2.1 MB/s eta 0:00:01
   ----------------------------------- ---- 14.0/15.9 MB 2.1 MB/s eta 0:00:01
   ----------------------------------- ---- 14.1/15.9 MB 2.1 MB/s eta 0:00:01
   ----------------------------------- ---- 14.2/15.9 MB 2.1 MB/s eta 0:00:01
   ------------------------------------ --- 14.3/15.9 MB 2.1 MB/s eta 0:00:01
   ------------------------------------ --- 14.5/15.9 MB 2.1 MB/s eta 0:00:01
   ------------------------------------ --- 14.6/15.9 MB 2.1 MB/s eta 0:00:01
   ------------------------------------- -- 14.7/15.9 MB 2.1 MB/s eta 0:00:01
   ------------------------------------- -- 14.8/15.9 MB 2.0 MB/s eta 0:00:01
   ------------------------------------- -- 14.9/15.9 MB 2.0 MB/s eta 0:00:01
   ------------------------------------- -- 14.9/15.9 MB 2.0 MB/s eta 0:00:01
   ------------------------------------- -- 15.0/15.9 MB 2.0 MB/s eta 0:00:01
   ------------------------------------- -- 15.1/15.9 MB 2.0 MB/s eta 0:00:01
   ------------------------------------- -- 15.1/15.9 MB 2.0 MB/s eta 0:00:01
   -------------------------------------- - 15.2/15.9 MB 2.0 MB/s eta 0:00:01
   -------------------------------------- - 15.2/15.9 MB 2.0 MB/s eta 0:00:01
   -------------------------------------- - 15.3/15.9 MB 2.0 MB/s eta 0:00:01
   -------------------------------------- - 15.3/15.9 MB 2.0 MB/s eta 0:00:01
   -------------------------------------- - 15.4/15.9 MB 2.0 MB/s eta 0:00:01
   -------------------------------------- - 15.5/15.9 MB 1.9 MB/s eta 0:00:01
   ---------------------------------------  15.6/15.9 MB 1.9 MB/s eta 0:00:01
   ---------------------------------------  15.6/15.9 MB 1.9 MB/s eta 0:00:01
   ---------------------------------------  15.7/15.9 MB 1.9 MB/s eta 0:00:01
   ---------------------------------------  15.7/15.9 MB 1.9 MB/s eta 0:00:01
   ---------------------------------------  15.8/15.9 MB 1.9 MB/s eta 0:00:01
   ---------------------------------------  15.9/15.9 MB 1.9 MB/s eta 0:00:01
   ---------------------------------------  15.9/15.9 MB 1.9 MB/s eta 0:00:01
   ---------------------------------------  15.9/15.9 MB 1.9 MB/s eta 0:00:01
   ---------------------------------------- 15.9/15.9 MB 1.8 MB/s eta 0:00:00
Downloading pyproj-3.6.1-cp312-cp312-win_amd64.whl (6.1 MB)
   ---------------------------------------- 0.0/6.1 MB ? eta -:--:--
   ---------------------------------------- 0.0/6.1 MB 1.9 MB/s eta 0:00:04
    --------------------------------------- 0.1/6.1 MB 1.2 MB/s eta 0:00:06
    --------------------------------------- 0.1/6.1 MB 1.2 MB/s eta 0:00:05
   - -------------------------------------- 0.2/6.1 MB 1.2 MB/s eta 0:00:05
   - -------------------------------------- 0.3/6.1 MB 1.2 MB/s eta 0:00:05
   -- ------------------------------------- 0.3/6.1 MB 1.2 MB/s eta 0:00:05
   -- ------------------------------------- 0.4/6.1 MB 1.2 MB/s eta 0:00:05
   -- ------------------------------------- 0.4/6.1 MB 1.2 MB/s eta 0:00:05
   --- ------------------------------------ 0.5/6.1 MB 1.2 MB/s eta 0:00:05
   --- ------------------------------------ 0.6/6.1 MB 1.4 MB/s eta 0:00:04
   ---- ----------------------------------- 0.7/6.1 MB 1.5 MB/s eta 0:00:04
   ----- ---------------------------------- 0.8/6.1 MB 1.6 MB/s eta 0:00:04
   ------ --------------------------------- 1.0/6.1 MB 1.7 MB/s eta 0:00:04
   ------- -------------------------------- 1.1/6.1 MB 1.8 MB/s eta 0:00:03
   ------- -------------------------------- 1.2/6.1 MB 1.8 MB/s eta 0:00:03
   -------- ------------------------------- 1.3/6.1 MB 1.9 MB/s eta 0:00:03
   --------- ------------------------------ 1.4/6.1 MB 1.9 MB/s eta 0:00:03
   ---------- ----------------------------- 1.5/6.1 MB 2.0 MB/s eta 0:00:03
   ---------- ----------------------------- 1.6/6.1 MB 2.0 MB/s eta 0:00:03
   ----------- ---------------------------- 1.8/6.1 MB 2.0 MB/s eta 0:00:03
   ------------ --------------------------- 1.9/6.1 MB 2.0 MB/s eta 0:00:03
   ------------ --------------------------- 2.0/6.1 MB 2.0 MB/s eta 0:00:03
   ------------- -------------------------- 2.1/6.1 MB 2.0 MB/s eta 0:00:02
   -------------- ------------------------- 2.2/6.1 MB 2.1 MB/s eta 0:00:02
   --------------- ------------------------ 2.3/6.1 MB 2.1 MB/s eta 0:00:02
   --------------- ------------------------ 2.4/6.1 MB 2.1 MB/s eta 0:00:02
   ---------------- ----------------------- 2.6/6.1 MB 2.1 MB/s eta 0:00:02
   ----------------- ---------------------- 2.7/6.1 MB 2.1 MB/s eta 0:00:02
   ------------------ --------------------- 2.8/6.1 MB 2.1 MB/s eta 0:00:02
   ------------------ --------------------- 2.9/6.1 MB 2.1 MB/s eta 0:00:02
   ------------------- -------------------- 3.0/6.1 MB 2.1 MB/s eta 0:00:02
   -------------------- ------------------- 3.1/6.1 MB 2.2 MB/s eta 0:00:02
   --------------------- ------------------ 3.2/6.1 MB 2.2 MB/s eta 0:00:02
   --------------------- ------------------ 3.3/6.1 MB 2.2 MB/s eta 0:00:02
   ---------------------- ----------------- 3.5/6.1 MB 2.2 MB/s eta 0:00:02
   ----------------------- ---------------- 3.6/6.1 MB 2.2 MB/s eta 0:00:02
   ------------------------ --------------- 3.7/6.1 MB 2.2 MB/s eta 0:00:02
   ------------------------ --------------- 3.8/6.1 MB 2.2 MB/s eta 0:00:02
   ------------------------- -------------- 3.9/6.1 MB 2.2 MB/s eta 0:00:01
   -------------------------- ------------- 4.0/6.1 MB 2.2 MB/s eta 0:00:01
   -------------------------- ------------- 4.1/6.1 MB 2.2 MB/s eta 0:00:01
   --------------------------- ------------ 4.2/6.1 MB 2.2 MB/s eta 0:00:01
   ---------------------------- ----------- 4.3/6.1 MB 2.2 MB/s eta 0:00:01
   ---------------------------- ----------- 4.4/6.1 MB 2.2 MB/s eta 0:00:01
   ----------------------------- ---------- 4.4/6.1 MB 2.2 MB/s eta 0:00:01
   ----------------------------- ---------- 4.5/6.1 MB 2.2 MB/s eta 0:00:01
   ------------------------------ --------- 4.6/6.1 MB 2.2 MB/s eta 0:00:01
   ------------------------------- -------- 4.7/6.1 MB 2.2 MB/s eta 0:00:01
   ------------------------------- -------- 4.8/6.1 MB 2.2 MB/s eta 0:00:01
   ------------------------------- -------- 4.8/6.1 MB 2.1 MB/s eta 0:00:01
   -------------------------------- ------- 4.9/6.1 MB 2.1 MB/s eta 0:00:01
   -------------------------------- ------- 4.9/6.1 MB 2.1 MB/s eta 0:00:01
   -------------------------------- ------- 4.9/6.1 MB 2.1 MB/s eta 0:00:01
   -------------------------------- ------- 5.0/6.1 MB 2.1 MB/s eta 0:00:01
   -------------------------------- ------- 5.0/6.1 MB 2.0 MB/s eta 0:00:01
   --------------------------------- ------ 5.0/6.1 MB 2.0 MB/s eta 0:00:01
   --------------------------------- ------ 5.1/6.1 MB 2.0 MB/s eta 0:00:01
   ---------------------------------- ----- 5.2/6.1 MB 2.0 MB/s eta 0:00:01
   ---------------------------------- ----- 5.3/6.1 MB 2.0 MB/s eta 0:00:01
   ---------------------------------- ----- 5.3/6.1 MB 2.0 MB/s eta 0:00:01
   ---------------------------------- ----- 5.3/6.1 MB 2.0 MB/s eta 0:00:01
   ----------------------------------- ---- 5.4/6.1 MB 1.9 MB/s eta 0:00:01
   ----------------------------------- ---- 5.4/6.1 MB 1.9 MB/s eta 0:00:01
   ------------------------------------ --- 5.6/6.1 MB 1.9 MB/s eta 0:00:01
   ------------------------------------ --- 5.6/6.1 MB 1.9 MB/s eta 0:00:01
   ------------------------------------ --- 5.6/6.1 MB 1.9 MB/s eta 0:00:01
   ------------------------------------ --- 5.6/6.1 MB 1.9 MB/s eta 0:00:01
   ------------------------------------- -- 5.8/6.1 MB 1.9 MB/s eta 0:00:01
   ------------------------------------- -- 5.8/6.1 MB 1.9 MB/s eta 0:00:01
   -------------------------------------- - 5.9/6.1 MB 1.9 MB/s eta 0:00:01
   -------------------------------------- - 5.9/6.1 MB 1.8 MB/s eta 0:00:01
   ---------------------------------------  6.0/6.1 MB 1.8 MB/s eta 0:00:01
   ---------------------------------------  6.0/6.1 MB 1.8 MB/s eta 0:00:01
   ---------------------------------------  6.0/6.1 MB 1.8 MB/s eta 0:00:01
   ---------------------------------------  6.0/6.1 MB 1.8 MB/s eta 0:00:01
   ---------------------------------------  6.0/6.1 MB 1.7 MB/s eta 0:00:01
   ---------------------------------------  6.1/6.1 MB 1.7 MB/s eta 0:00:01
   ---------------------------------------- 6.1/6.1 MB 1.7 MB/s eta 0:00:00
Downloading shapely-2.0.6-cp312-cp312-win_amd64.whl (1.4 MB)
   ---------------------------------------- 0.0/1.4 MB ? eta -:--:--
   ---------------------------------------- 0.0/1.4 MB ? eta -:--:--
   ---------------------------------------- 0.0/1.4 MB ? eta -:--:--
    --------------------------------------- 0.0/1.4 MB 325.1 kB/s eta 0:00:05
    --------------------------------------- 0.0/1.4 MB 325.1 kB/s eta 0:00:05
   --- ------------------------------------ 0.1/1.4 MB 656.4 kB/s eta 0:00:03
   --- ------------------------------------ 0.1/1.4 MB 654.9 kB/s eta 0:00:03
   --- ------------------------------------ 0.1/1.4 MB 654.9 kB/s eta 0:00:03
   --- ------------------------------------ 0.1/1.4 MB 500.5 kB/s eta 0:00:03
   ---- ----------------------------------- 0.2/1.4 MB 490.7 kB/s eta 0:00:03
   ---- ----------------------------------- 0.2/1.4 MB 455.1 kB/s eta 0:00:03
   ----- ---------------------------------- 0.2/1.4 MB 436.8 kB/s eta 0:00:03
   ----- ---------------------------------- 0.2/1.4 MB 436.8 kB/s eta 0:00:03
   ----- ---------------------------------- 0.2/1.4 MB 436.8 kB/s eta 0:00:03
   ----- ---------------------------------- 0.2/1.4 MB 366.4 kB/s eta 0:00:04
   ----- ---------------------------------- 0.2/1.4 MB 366.4 kB/s eta 0:00:04
   ------ --------------------------------- 0.2/1.4 MB 344.1 kB/s eta 0:00:04
   ------ --------------------------------- 0.2/1.4 MB 342.3 kB/s eta 0:00:04
   ------ --------------------------------- 0.2/1.4 MB 342.3 kB/s eta 0:00:04
   ------- -------------------------------- 0.3/1.4 MB 314.7 kB/s eta 0:00:04
   ------- -------------------------------- 0.3/1.4 MB 321.5 kB/s eta 0:00:04
   ------- -------------------------------- 0.3/1.4 MB 321.5 kB/s eta 0:00:04
   ------- -------------------------------- 0.3/1.4 MB 305.2 kB/s eta 0:00:04
   ------- -------------------------------- 0.3/1.4 MB 305.2 kB/s eta 0:00:04
   -------- ------------------------------- 0.3/1.4 MB 306.5 kB/s eta 0:00:04
   --------- ------------------------------ 0.3/1.4 MB 312.4 kB/s eta 0:00:04
   --------- ------------------------------ 0.3/1.4 MB 304.0 kB/s eta 0:00:04
   --------- ------------------------------ 0.4/1.4 MB 305.1 kB/s eta 0:00:04
   --------- ------------------------------ 0.4/1.4 MB 305.1 kB/s eta 0:00:04
   ---------- ----------------------------- 0.4/1.4 MB 301.7 kB/s eta 0:00:04
   ---------- ----------------------------- 0.4/1.4 MB 303.1 kB/s eta 0:00:04
   ----------- ---------------------------- 0.4/1.4 MB 307.9 kB/s eta 0:00:04
   ----------- ---------------------------- 0.4/1.4 MB 304.8 kB/s eta 0:00:04
   ------------ --------------------------- 0.4/1.4 MB 309.2 kB/s eta 0:00:04
   ------------ --------------------------- 0.5/1.4 MB 306.2 kB/s eta 0:00:04
   ------------- -------------------------- 0.5/1.4 MB 313.7 kB/s eta 0:00:04
   ------------- -------------------------- 0.5/1.4 MB 317.5 kB/s eta 0:00:03
   ------------- -------------------------- 0.5/1.4 MB 314.5 kB/s eta 0:00:03
   -------------- ------------------------- 0.5/1.4 MB 318.2 kB/s eta 0:00:03
   --------------- ------------------------ 0.6/1.4 MB 324.6 kB/s eta 0:00:03
   ---------------- ----------------------- 0.6/1.4 MB 330.5 kB/s eta 0:00:03
   ---------------- ----------------------- 0.6/1.4 MB 333.5 kB/s eta 0:00:03
   ----------------- ---------------------- 0.6/1.4 MB 338.7 kB/s eta 0:00:03
   ------------------ --------------------- 0.7/1.4 MB 344.1 kB/s eta 0:00:03
   ------------------- -------------------- 0.7/1.4 MB 348.7 kB/s eta 0:00:03
   ------------------- -------------------- 0.7/1.4 MB 353.3 kB/s eta 0:00:03
   -------------------- ------------------- 0.7/1.4 MB 355.2 kB/s eta 0:00:02
   -------------------- ------------------- 0.7/1.4 MB 354.8 kB/s eta 0:00:02
   --------------------- ------------------ 0.8/1.4 MB 361.4 kB/s eta 0:00:02
   ---------------------- ----------------- 0.8/1.4 MB 369.7 kB/s eta 0:00:02
   ---------------------- ----------------- 0.8/1.4 MB 369.2 kB/s eta 0:00:02
   ----------------------- ---------------- 0.8/1.4 MB 373.2 kB/s eta 0:00:02
   ------------------------ --------------- 0.9/1.4 MB 376.3 kB/s eta 0:00:02
   ------------------------ --------------- 0.9/1.4 MB 380.1 kB/s eta 0:00:02
   ------------------------- -------------- 0.9/1.4 MB 383.0 kB/s eta 0:00:02
   -------------------------- ------------- 1.0/1.4 MB 385.7 kB/s eta 0:00:02
   --------------------------- ------------ 1.0/1.4 MB 390.7 kB/s eta 0:00:02
   ---------------------------- ----------- 1.0/1.4 MB 395.5 kB/s eta 0:00:02
   ----------------------------- ---------- 1.1/1.4 MB 404.1 kB/s eta 0:00:01
   ----------------------------- ---------- 1.1/1.4 MB 405.7 kB/s eta 0:00:01
   ------------------------------ --------- 1.1/1.4 MB 407.6 kB/s eta 0:00:01
   ------------------------------- -------- 1.1/1.4 MB 415.6 kB/s eta 0:00:01
   -------------------------------- ------- 1.2/1.4 MB 419.8 kB/s eta 0:00:01
   --------------------------------- ------ 1.2/1.4 MB 423.6 kB/s eta 0:00:01
   ---------------------------------- ----- 1.3/1.4 MB 432.1 kB/s eta 0:00:01
   ----------------------------------- ---- 1.3/1.4 MB 433.4 kB/s eta 0:00:01
   ------------------------------------ --- 1.3/1.4 MB 438.0 kB/s eta 0:00:01
   ------------------------------------- -- 1.3/1.4 MB 443.7 kB/s eta 0:00:01
   -------------------------------------- - 1.4/1.4 MB 447.0 kB/s eta 0:00:01
   -------------------------------------- - 1.4/1.4 MB 449.1 kB/s eta 0:00:01
   ---------------------------------------  1.4/1.4 MB 449.9 kB/s eta 0:00:01
   ---------------------------------------  1.4/1.4 MB 448.7 kB/s eta 0:00:01
   ---------------------------------------- 1.4/1.4 MB 447.2 kB/s eta 0:00:00
Installing collected packages: shapely, pyproj, pyogrio, geopandas
Successfully installed geopandas-1.0.1 pyogrio-0.9.0 pyproj-3.6.1 shapely-2.0.6
Note: you may need to restart the kernel to use updated packages.
In [40]:
import geopandas as gpd
import matplotlib.pyplot as plt
from shapely.geometry import Point
import pandas as pd

# Sample data for military bases
bases = pd.DataFrame({
    'base_name': ['Base A', 'Base B', 'Base C', 'Base D', 'Base E'],
    'latitude': [28.6139, 19.0760, 12.9716, 24.6273, 18.1569],
    'longitude': [77.2090, 72.8777, 77.5946, 24.1578, 45.5896]
})

# Geospatial DataFrame
gdf = gpd.GeoDataFrame(bases, geometry=gpd.points_from_xy(bases.longitude, bases.latitude))

# Load a political map of the world (Replace this with the path to your shapefile for a political map)
world = gpd.read_file(r'E:\world.shp')

# Plotting Military Bases on World Political Map
ax = world.plot(figsize=(15, 10), color='lightgray', edgecolor='black')
gdf.plot(ax=ax, color='red', marker='o', markersize=50, label='Military Base')

# Adding labels for each base
for x, y, label in zip(gdf.geometry.x, gdf.geometry.y, gdf.base_name):
    plt.text(x, y, label, fontsize=12, ha='right')

plt.title("International Military Bases on World Political Map")
plt.legend()
plt.show()
No description has been provided for this image

Risk Analysis of Military Base Proximity to Tension Hotspots¶

In [41]:
import geopandas as gpd
from shapely.geometry import Point

# Example geospatial dataframes for tension hotspots and military bases
tension_hotspots = gpd.GeoDataFrame({
    'hotspot_name': ['Hotspot 1', 'Hotspot 2'],
    'geometry': [Point(78.9629, 20.5937), Point(80.9462, 26.8467)]
})

# Example geospatial dataframe for military bases
gdf = gpd.GeoDataFrame({
    'base_name': ['Base A', 'Base B'],
    'geometry': [Point(77.1025, 28.7041), Point(72.8777, 19.0760)]
})

# Calculate distance between military bases and tension hotspots
gdf['risk_score'] = gdf.geometry.apply(lambda x: tension_hotspots.distance(x).min())

# Print risk scores for military bases
print("Risk scores for military bases:", gdf[['base_name', 'risk_score']])
Risk scores for military bases:   base_name  risk_score
0    Base A    4.268954
1    Base B    6.271608

Sentiment Trend Analysis Over Time¶

In [42]:
import pandas as pd
import matplotlib.pyplot as plt

# Sample sentiment data (replace with actual sentiment scores)
sentiments = [0.1, -0.2, 0.3, 0.4, -0.1, 0.2, -0.3]  # Example sentiment scores

# Create DataFrame with sentiment scores
df_sentiment = pd.DataFrame({
    'date': pd.date_range(start='1/1/2023', periods=len(sentiments)),
    'sentiment_score': sentiments
})

# Calculate rolling average of sentiment scores
df_sentiment['sentiment_rolling_avg'] = df_sentiment['sentiment_score'].rolling(window=2).mean()

# Plot sentiment scores and rolling average
df_sentiment.plot(x='date', y=['sentiment_score', 'sentiment_rolling_avg'])
plt.title("Sentiment Trend Analysis Over Time")
plt.xlabel("Date")
plt.ylabel("Sentiment Score")
plt.show()
No description has been provided for this image

Interactive Map of Geopolitical Tensions¶

In [15]:
import pandas as pd
import geopandas as gpd
from shapely.geometry import Point
import folium

# Sample data for demonstration
data = {
    'base_name': ['Base 1', 'Base 2'],
    'geometry': [Point(78.9629, 20.5937), Point(80.9462, 26.8467)]
}

# Create a GeoDataFrame
gdf = gpd.GeoDataFrame(data, geometry='geometry')

# Check if 'latitude' and 'longitude' columns exist
if 'latitude' not in gdf.columns or 'longitude' not in gdf.columns:
    gdf['latitude'] = gdf.geometry.y
    gdf['longitude'] = gdf.geometry.x

# Display the updated GeoDataFrame
print("Updated GeoDataFrame with latitude and longitude columns:")
print(gdf)

# Create a map centered around a specific location
m = folium.Map(location=[20.5937, 78.9629], zoom_start=5)

# Add military bases and tension hotspots to the map
for idx, row in gdf.iterrows():
    folium.Marker(location=[row['latitude'], row['longitude']], popup=row['base_name']).add_to(m)

# Assuming tension_hotspots is also a GeoDataFrame
tension_hotspots = gpd.GeoDataFrame({
    'hotspot_name': ['Hotspot 1', 'Hotspot 2'],
    'geometry': [Point(78.9629, 20.5937), Point(80.9462, 26.8467)]
})

# Add tension hotspots to the map
for idx, row in tension_hotspots.iterrows():
    folium.Marker(location=[row.geometry.y, row.geometry.x], popup=row['hotspot_name'], icon=folium.Icon(color='red')).add_to(m)

# Display the map
m.save("geopolitical_tensions_map.html")

# Display the saved map in a browser (requires a local server or opening manually)
import webbrowser
webbrowser.open('geopolitical_tensions_map.html')
Updated GeoDataFrame with latitude and longitude columns:
  base_name                 geometry  latitude  longitude
0    Base 1  POINT (78.9629 20.5937)   20.5937    78.9629
1    Base 2  POINT (80.9462 26.8467)   26.8467    80.9462
Out[15]:
True

Visualizing Changes in Defense Infrastructure¶

In [44]:
# Simulated data for changes in defense infrastructure
infrastructure_changes = {
    'base_name': ['Base A', 'Base B', 'Base C'],
    'infrastructure_status': [1, 0, 1]  # 1: operational, 0: non-operational
}

df_infra = pd.DataFrame(infrastructure_changes)
df_infra.plot(kind='bar', x='base_name', y='infrastructure_status')
plt.title("Changes in Defense Infrastructure")
plt.show()
No description has been provided for this image

Simulation of Geopolitical Scenarios¶

In [45]:
# Simulating scenarios - just a basic simulation setup
def simulate_scenario(initial_tension, military_response):
    new_tension = initial_tension + (military_response * 0.1)
    return new_tension

scenario_results = [simulate_scenario(50, i) for i in range(10)]
print("Simulated geopolitical scenarios:", scenario_results)
Simulated geopolitical scenarios: [50.0, 50.1, 50.2, 50.3, 50.4, 50.5, 50.6, 50.7, 50.8, 50.9]

Machine Learning Prediction of Military Movement¶

In [46]:
import numpy as np
import pandas as pd
from sklearn.tree import DecisionTreeClassifier

# Sample data for demonstration (assuming df is already defined)
# df = pd.DataFrame({...})  # Your existing DataFrame

# Check if 'military_movement_index' column is present in the DataFrame
if 'military_movement_index' not in df.columns:
    # Add the 'military_movement_index' column with default values (e.g., all zeros)
    df['military_movement_index'] = 0  # or some other default value or generated data

# Display the updated DataFrame to ensure the column was added
print("Updated DataFrame:")
print(df.head())

# Sample data for training
X = np.array(df['geopolitical_tension_index']).reshape(-1, 1)
y = df['military_movement_index']

# Decision Tree Model
model = DecisionTreeClassifier()
model.fit(X, y)

# Define predicted_tensions with some sample values
# Replace these with actual future tension values you want to predict
predicted_tensions = np.array([2.5, 3.0, 3.5, 4.0])  # Example tension values

# Predict military movement based on future tensions
predicted_movements = model.predict(predicted_tensions.reshape(-1, 1))
print("Predicted military movements:", predicted_movements)
Updated DataFrame:
        date  geopolitical_tension_index  military_movement_index
0 2023-01-01                           0                        0
1 2023-01-02                           1                        0
2 2023-01-03                           2                        0
3 2023-01-04                           3                        0
4 2023-01-05                           4                        0
Predicted military movements: [0 0 0 0]

Visualizing Army, Navy, and Air Force Bases in Realistic Way¶

In [61]:
pip install --upgrade cartopy matplotlib
Requirement already satisfied: cartopy in d:\anaconda\lib\site-packages (0.23.0)Note: you may need to restart the kernel to use updated packages.

Requirement already satisfied: matplotlib in d:\anaconda\lib\site-packages (3.8.4)
Collecting matplotlib
  Downloading matplotlib-3.9.2-cp312-cp312-win_amd64.whl.metadata (11 kB)
Requirement already satisfied: numpy>=1.21 in d:\anaconda\lib\site-packages (from cartopy) (1.26.4)
Requirement already satisfied: shapely>=1.7 in d:\anaconda\lib\site-packages (from cartopy) (2.0.6)
Requirement already satisfied: packaging>=20 in d:\anaconda\lib\site-packages (from cartopy) (23.2)
Requirement already satisfied: pyshp>=2.3 in d:\anaconda\lib\site-packages (from cartopy) (2.3.1)
Requirement already satisfied: pyproj>=3.3.1 in d:\anaconda\lib\site-packages (from cartopy) (3.6.1)
Requirement already satisfied: contourpy>=1.0.1 in d:\anaconda\lib\site-packages (from matplotlib) (1.2.0)
Requirement already satisfied: cycler>=0.10 in d:\anaconda\lib\site-packages (from matplotlib) (0.11.0)
Requirement already satisfied: fonttools>=4.22.0 in d:\anaconda\lib\site-packages (from matplotlib) (4.51.0)
Requirement already satisfied: kiwisolver>=1.3.1 in d:\anaconda\lib\site-packages (from matplotlib) (1.4.4)
Requirement already satisfied: pillow>=8 in d:\anaconda\lib\site-packages (from matplotlib) (10.3.0)
Requirement already satisfied: pyparsing>=2.3.1 in d:\anaconda\lib\site-packages (from matplotlib) (3.0.9)
Requirement already satisfied: python-dateutil>=2.7 in d:\anaconda\lib\site-packages (from matplotlib) (2.9.0.post0)
Requirement already satisfied: certifi in d:\anaconda\lib\site-packages (from pyproj>=3.3.1->cartopy) (2024.7.4)
Requirement already satisfied: six>=1.5 in d:\anaconda\lib\site-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)
Downloading matplotlib-3.9.2-cp312-cp312-win_amd64.whl (7.8 MB)
   ---------------------------------------- 0.0/7.8 MB ? eta -:--:--
   ---------------------------------------- 0.0/7.8 MB ? eta -:--:--
   ---------------------------------------- 0.1/7.8 MB 525.1 kB/s eta 0:00:15
    --------------------------------------- 0.1/7.8 MB 737.3 kB/s eta 0:00:11
    --------------------------------------- 0.2/7.8 MB 1.1 MB/s eta 0:00:07
   - -------------------------------------- 0.3/7.8 MB 1.3 MB/s eta 0:00:06
   -- ------------------------------------- 0.4/7.8 MB 1.6 MB/s eta 0:00:05
   -- ------------------------------------- 0.6/7.8 MB 1.8 MB/s eta 0:00:05
   --- ------------------------------------ 0.7/7.8 MB 1.9 MB/s eta 0:00:04
   ---- ----------------------------------- 0.8/7.8 MB 2.0 MB/s eta 0:00:04
   ---- ----------------------------------- 1.0/7.8 MB 2.1 MB/s eta 0:00:04
   ----- ---------------------------------- 1.1/7.8 MB 2.2 MB/s eta 0:00:04
   ------ --------------------------------- 1.2/7.8 MB 2.3 MB/s eta 0:00:03
   ------- -------------------------------- 1.4/7.8 MB 2.3 MB/s eta 0:00:03
   ------- -------------------------------- 1.5/7.8 MB 2.4 MB/s eta 0:00:03
   -------- ------------------------------- 1.7/7.8 MB 2.4 MB/s eta 0:00:03
   --------- ------------------------------ 1.8/7.8 MB 2.4 MB/s eta 0:00:03
   --------- ------------------------------ 1.9/7.8 MB 2.5 MB/s eta 0:00:03
   ---------- ----------------------------- 2.1/7.8 MB 2.5 MB/s eta 0:00:03
   ----------- ---------------------------- 2.2/7.8 MB 2.5 MB/s eta 0:00:03
   ----------- ---------------------------- 2.3/7.8 MB 2.5 MB/s eta 0:00:03
   ------------ --------------------------- 2.5/7.8 MB 2.5 MB/s eta 0:00:03
   ------------- -------------------------- 2.6/7.8 MB 2.6 MB/s eta 0:00:03
   -------------- ------------------------- 2.8/7.8 MB 2.5 MB/s eta 0:00:02
   -------------- ------------------------- 2.9/7.8 MB 2.6 MB/s eta 0:00:02
   --------------- ------------------------ 3.0/7.8 MB 2.6 MB/s eta 0:00:02
   ---------------- ----------------------- 3.2/7.8 MB 2.6 MB/s eta 0:00:02
   ---------------- ----------------------- 3.3/7.8 MB 2.6 MB/s eta 0:00:02
   ----------------- ---------------------- 3.4/7.8 MB 2.6 MB/s eta 0:00:02
   ------------------ --------------------- 3.6/7.8 MB 2.7 MB/s eta 0:00:02
   ------------------ --------------------- 3.7/7.8 MB 2.6 MB/s eta 0:00:02
   ------------------- -------------------- 3.8/7.8 MB 2.6 MB/s eta 0:00:02
   -------------------- ------------------- 4.0/7.8 MB 2.6 MB/s eta 0:00:02
   --------------------- ------------------ 4.1/7.8 MB 2.7 MB/s eta 0:00:02
   --------------------- ------------------ 4.2/7.8 MB 2.7 MB/s eta 0:00:02
   ---------------------- ----------------- 4.4/7.8 MB 2.7 MB/s eta 0:00:02
   ---------------------- ----------------- 4.5/7.8 MB 2.7 MB/s eta 0:00:02
   ----------------------- ---------------- 4.6/7.8 MB 2.7 MB/s eta 0:00:02
   ------------------------ --------------- 4.7/7.8 MB 2.7 MB/s eta 0:00:02
   ------------------------ --------------- 4.9/7.8 MB 2.7 MB/s eta 0:00:02
   ------------------------- -------------- 5.0/7.8 MB 2.7 MB/s eta 0:00:02
   -------------------------- ------------- 5.2/7.8 MB 2.7 MB/s eta 0:00:01
   --------------------------- ------------ 5.3/7.8 MB 2.7 MB/s eta 0:00:01
   --------------------------- ------------ 5.4/7.8 MB 2.7 MB/s eta 0:00:01
   ---------------------------- ----------- 5.5/7.8 MB 2.7 MB/s eta 0:00:01
   ---------------------------- ----------- 5.7/7.8 MB 2.7 MB/s eta 0:00:01
   ----------------------------- ---------- 5.8/7.8 MB 2.7 MB/s eta 0:00:01
   ------------------------------ --------- 5.9/7.8 MB 2.7 MB/s eta 0:00:01
   ------------------------------ --------- 6.0/7.8 MB 2.7 MB/s eta 0:00:01
   ------------------------------- -------- 6.2/7.8 MB 2.7 MB/s eta 0:00:01
   -------------------------------- ------- 6.3/7.8 MB 2.7 MB/s eta 0:00:01
   -------------------------------- ------- 6.5/7.8 MB 2.7 MB/s eta 0:00:01
   --------------------------------- ------ 6.6/7.8 MB 2.7 MB/s eta 0:00:01
   ---------------------------------- ----- 6.7/7.8 MB 2.7 MB/s eta 0:00:01
   ---------------------------------- ----- 6.9/7.8 MB 2.7 MB/s eta 0:00:01
   ----------------------------------- ---- 7.0/7.8 MB 2.7 MB/s eta 0:00:01
   ------------------------------------ --- 7.1/7.8 MB 2.7 MB/s eta 0:00:01
   ------------------------------------ --- 7.2/7.8 MB 2.7 MB/s eta 0:00:01
   ------------------------------------- -- 7.3/7.8 MB 2.7 MB/s eta 0:00:01
   -------------------------------------- - 7.5/7.8 MB 2.7 MB/s eta 0:00:01
   -------------------------------------- - 7.6/7.8 MB 2.7 MB/s eta 0:00:01
   ---------------------------------------  7.8/7.8 MB 2.7 MB/s eta 0:00:01
   ---------------------------------------  7.8/7.8 MB 2.7 MB/s eta 0:00:01
   ---------------------------------------- 7.8/7.8 MB 2.7 MB/s eta 0:00:00
Installing collected packages: matplotlib
  Attempting uninstall: matplotlib
    Found existing installation: matplotlib 3.8.4
    Uninstalling matplotlib-3.8.4:
ERROR: Could not install packages due to an OSError: [WinError 5] Access is denied: 'd:\\anaconda\\lib\\site-packages\\matplotlib\\backends\\_backend_agg.cp312-win_amd64.pyd'
Consider using the `--user` option or check the permissions.

In [7]:
import geopandas as gpd
import folium
from shapely.geometry import Point

# Create a GeoDataFrame for military bases with their respective types and colors
data = {
    'Type': ['Army', 'Army', 'Army', 'Army', 'Army', 'Army', 'Army', 'Army', 'Army', 'Army',
             'Navy', 'Navy', 'Navy', 'Navy', 'Navy', 'Navy', 'Navy', 'Navy', 'Navy', 'Navy',
             'Air Force', 'Air Force', 'Air Force', 'Air Force', 'Air Force',
             'Air Force', 'Air Force', 'Air Force', 'Air Force', 'Air Force'],
    'Latitude': [
        28.6139, 40.7128, -33.8688, 48.8566, 39.9042, 55.7558, 35.6895, 52.5200, 6.5244, 19.4326,
        38.9072, 40.4168, -37.8136, 1.3521, 41.9028, 47.4979, 25.2048, -6.2088, 59.9343, -34.6037,
        37.7749, 48.8566, -33.9249, 51.5074, 30.0444, 28.7041, 41.0082, 35.0116, -22.9068, 52.5200
    ],
    'Longitude': [
        77.2090, -74.0060, 151.2093, 2.3522, 116.4074, 37.6173, 139.6917, 13.4050, 3.3792, -99.1332,
        -77.0369, -3.7038, 144.9631, 103.8198, 12.4964, 19.0402, 55.2708, 106.8456, 30.3351, -58.3816,
        -122.4194, 2.3522, 18.4241, -0.1276, 31.2357, 77.1025, 28.9784, 135.7681, -43.1729, 13.4050
    ],
    'Color': [
        'skyblue']*10 + ['orange']*10 + ['lightgreen']*10
}

# Convert to GeoDataFrame
gdf = gpd.GeoDataFrame(data, geometry=gpd.points_from_xy(data['Longitude'], data['Latitude']))

# Load a base world map using Folium
world_map = folium.Map(location=[0, 0], zoom_start=2)

# Function to add points to the map
def add_marker(row):
    folium.CircleMarker(
        location=[row['Latitude'], row['Longitude']],
        radius=5,
        color=row['Color'],
        fill=True,
        fill_color=row['Color'],
        fill_opacity=0.7,
        popup=row['Type']
    ).add_to(world_map)

# Apply the function to all rows in the GeoDataFrame
gdf.apply(add_marker, axis=1)

# Display the map
world_map.save("military_bases_map.html")
world_map
Out[7]:
Make this Notebook Trusted to load map: File -> Trust Notebook

Time Series Prediction of Defense Movements¶

In [50]:
from statsmodels.tsa.arima.model import ARIMA

# Sample time series data
model = ARIMA(df['military_movement_index'], order=(1, 1, 1))
model_fit = model.fit()
forecast = model_fit.forecast(steps=5)
print("Time Series Prediction of Defense Movements:", forecast)
Time Series Prediction of Defense Movements: 100    0.0
101    0.0
102    0.0
103    0.0
104    0.0
Name: predicted_mean, dtype: float64
D:\Anaconda\Lib\site-packages\statsmodels\base\model.py:607: ConvergenceWarning:

Maximum Likelihood optimization failed to converge. Check mle_retvals

Comparative Analysis of Military Bases Between Countries¶

In [51]:
import pandas as pd
import matplotlib.pyplot as plt

# Sample data for military bases in India and the USA
# Replace these with your actual data
india_bases = pd.DataFrame({
    'base_name': ['Base1', 'Base2', 'Base3'],
    'latitude': [20.5937, 22.5726, 23.2599],
    'longitude': [78.9629, 88.3639, 77.2899]
})

usa_bases = pd.DataFrame({
    'base_name': ['BaseA', 'BaseB', 'BaseC'],
    'latitude': [37.7749, 40.7128, 34.0522],
    'longitude': [-122.4194, -74.0060, -118.2437]
})

# Concatenate DataFrames with keys
comparison_df = pd.concat([india_bases, usa_bases], keys=['India', 'USA'])

# Reset index to flatten the DataFrame
comparison_df = comparison_df.reset_index(level=0).rename(columns={'level_0': 'Country'})

# Plot the data
fig, ax = plt.subplots(figsize=(10, 6))

# Plotting each country’s data in different colors
for country, group in comparison_df.groupby('Country'):
    group.plot(kind='bar', x='base_name', y='latitude', ax=ax, label=country, alpha=0.7)

plt.title("Comparative Analysis of Military Bases Between India and USA")
plt.ylabel('Latitude')
plt.xlabel('Base Name')
plt.legend(title='Country')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
No description has been provided for this image

Radar Charts of Military Capabilities¶

In [52]:
import pandas as pd
import plotly.express as px

# Simulated capabilities data
capabilities = {
    'Capability': ['Land', 'Air', 'Sea', 'Cyber', 'Space'],
    'India': [80, 70, 60, 50, 40],
    'USA': [90, 85, 80, 75, 70]
}

df_capabilities = pd.DataFrame(capabilities)

# Create the initial plot for India
fig = px.line_polar(df_capabilities, r='India', theta='Capability', line_close=True)

# Add a trace for USA
fig.add_scatterpolar(r=df_capabilities['USA'], theta=df_capabilities['Capability'], fill='toself', name='USA')

# Update layout to add title and show plot
fig.update_layout(title="Comparison of Military Capabilities between India and USA", legend_title='Country')
fig.show()

Tracking Real-Time Defense Movements¶

In [53]:
import numpy as np
import matplotlib.pyplot as plt

# Simulated tracking (would normally use a live feed)
real_time_movements = np.random.rand(10, 2)  # Randomized data for simulation

plt.plot(real_time_movements[:, 0], real_time_movements[:, 1])
plt.title("Tracking Real-Time Defense Movements")
plt.xlabel("X Axis Label")  # Replace with your desired label
plt.ylabel("Y Axis Label")  # Replace with your desired label
plt.show()
No description has been provided for this image

Sentiment Analysis of Social Media Data¶

In [54]:
import pandas as pd

# Sample data: Assuming there's a DataFrame with social media posts
data = {
    'post': ["Great move by the military!", "Why are tensions rising?", "Stay safe everyone."]
}
df = pd.DataFrame(data)

# Define a simple sentiment analysis function
def analyze_sentiment(post):
    # This is a placeholder function. Replace it with actual sentiment analysis logic.
    if "move" in post or "safe" in post:
        return "Positive"
    elif "tensions" in post:
        return "Negative"
    else:
        return "Neutral"

# Apply sentiment analysis and add it as a new column
if 'analyze_sentiment' not in df.columns:
    df['analyze_sentiment'] = [analyze_sentiment(post) for post in df['post']]
else:
    print("'analyze_sentiment' column already exists in the DataFrame.")

# Display the updated DataFrame
print(df)
                          post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive

Visualizing Defense Readiness Levels¶

In [56]:
# Simulated readiness levels
readiness_levels = {
    'Base': ['Base A', 'Base B', 'Base C'],
    'Readiness': [0.9, 0.7, 0.8]
}

df_readiness = pd.DataFrame(readiness_levels)
df_readiness.plot(kind='bar', x='Base', y='Readiness', color='orange')
plt.title("Visualizing Defense Readiness Levels")
plt.show()
No description has been provided for this image
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=390)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=391)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=392)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=393)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=394)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=395)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=396)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=397)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=398)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=399)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=400)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=401)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=402)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=403)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=404)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=405)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=406)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=407)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=408)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=409)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=410)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=411)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=412)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=413)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=414)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=415)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=416)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=417)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=418)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=419)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=420)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=421)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=422)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=423)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=424)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=425)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=426)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=427)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=428)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['post', 'analyze_sentiment'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=429)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=                          post analyze_sentiment...
2          Stay safe everyone.          Positive,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =                           post analyze_sentiment
0  Great move by the military!          Positive
1     Why are tensions rising?          Negative
2          Stay safe everyone.          Positive
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['post', 'analyze_sentiment'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

Prediction of Geopolitical Crisis Impact on Defense¶

In [6]:
# Import necessary libraries
from sklearn.linear_model import LinearRegression
import numpy as np

# Example data (features and target values)
# X_train is a 2D array of feature values
# y_train is a 1D array of target values
X_train = np.array([[50], [60], [70], [80], [90]])  # Feature values
y_train = np.array([200, 220, 250, 270, 300])       # Target values

# Create and fit the model
model = LinearRegression()
model.fit(X_train, y_train)

# Simplified prediction (based on linear regression)
impact_prediction = model.predict([[75]])
print("Predicted impact on defense due to a geopolitical crisis:", impact_prediction[0])
Predicted impact on defense due to a geopolitical crisis: 260.5

Clustering of Geopolitical Tensions Over Time¶

In [5]:
import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# Example DataFrame for demonstration purposes
data = {
    'date': pd.date_range(start='2023-01-01', periods=10),
    'geopolitical_tension_index': [1.2, 3.4, 2.1, 4.2, 5.6, 4.4, 3.3, 2.2, 1.1, 0.5]
}
df = pd.DataFrame(data)
df.set_index('date', inplace=True)

# Check if 'geopolitical_tension_index' column is present
if 'geopolitical_tension_index' not in df.columns:
    print("'geopolitical_tension_index' column not found in DataFrame. Adding the column.")
    df['geopolitical_tension_index'] = [None] * len(df)

# Display the updated DataFrame
print("Updated DataFrame:")
print(df)

# Clustering tensions over time
kmeans = KMeans(n_clusters=3)
df['cluster'] = kmeans.fit_predict(df[['geopolitical_tension_index']])

# Visualization of clusters
plt.scatter(df.index, df['geopolitical_tension_index'], c=df['cluster'])
plt.title("Clustering of Geopolitical Tensions Over Time")
plt.xlabel("Date")
plt.ylabel("Geopolitical Tension Index")
plt.show()
Updated DataFrame:
            geopolitical_tension_index
date                                  
2023-01-01                         1.2
2023-01-02                         3.4
2023-01-03                         2.1
2023-01-04                         4.2
2023-01-05                         5.6
2023-01-06                         4.4
2023-01-07                         3.3
2023-01-08                         2.2
2023-01-09                         1.1
2023-01-10                         0.5
D:\Anaconda\Lib\site-packages\sklearn\cluster\_kmeans.py:1446: UserWarning: KMeans is known to have a memory leak on Windows with MKL, when there are less chunks than available threads. You can avoid it by setting the environment variable OMP_NUM_THREADS=1.
  warnings.warn(
No description has been provided for this image

Analysis of Defense Budget Allocation¶

In [64]:
# Example budget data
budget_data = {
    'Sector': ['Land', 'Air', 'Sea', 'Cyber', 'Space'],
    'Budget': [300, 250, 200, 100, 150]
}

df_budget = pd.DataFrame(budget_data)
df_budget.plot(kind='pie', y='Budget', labels=df_budget['Sector'], autopct='%1.1f%%')
plt.title("Analysis of Defense Budget Allocation")
plt.show()
No description has been provided for this image
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=831)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=832)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=833)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=834)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=835)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=836)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=837)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=838)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=839)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=840)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=841)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=842)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=843)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=844)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=845)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=846)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=847)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=848)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=849)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=850)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=851)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=852)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=853)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=854)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=855)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=856)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=857)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=858)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=859)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=860)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=861)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=862)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=863)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=864)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=865)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=866)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=867)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=868)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=869)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=870)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=871)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3804 try:
-> 3805     return self._engine.get_loc(casted_key)
        casted_key = 'date'
        self = Index(['geopolitical_tension_index', 'cluster'], dtype='object')
   3806 except KeyError as err:

File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc()

File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc()

File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item()

File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
Cell In[33], line 27, in update_graph(n=872)
     21 @app.callback(
     22     Output('tension-graph', 'figure'),
     23     [Input('interval-component', 'n_intervals')]
     24 )
     25 def update_graph(n):
     26     fig = {
---> 27         'data': [{'x': df['date'], 'y': df['geopolitical_tension_index'], 'type': 'line', 'name': 'Tension'}],
        fig = Figure({
    'data': [{'hovertemplate': 'India=%{r}<br>Capability=%{theta}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'marker': {'symbol': 'circle'},
              'mode': 'lines',
              'name': '',
              'r': array([80, 70, 60, 50, 40, 80], dtype=int64),
              'showlegend': False,
              'subplot': 'polar',
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space', 'Land'], dtype=object),
              'type': 'scatterpolar'},
             {'fill': 'toself',
              'name': 'USA',
              'r': array([90, 85, 80, 75, 70], dtype=int64),
              'theta': array(['Land', 'Air', 'Sea', 'Cyber', 'Space'], dtype=object),
              'type': 'scatterpolar'}],
    'layout': {'legend': {'title': {'text': 'Country'}, 'tracegroupgap': 0},
               'margin': {'t': 60},
               'polar': {'angularaxis': {'direction': 'clockwise', 'rotation': 90},
                         'domain': {'x': [0.0, 1.0], 'y': [0.0, 1.0]}},
               'template': '...',
               'title': {'text': 'Comparison of Military Capabilities between India and USA'}}
})
        df =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
     28         'layout': {'title': 'Geopolitical Tensions Over Time'}
     29     }
     30     return fig

File D:\Anaconda\Lib\site-packages\pandas\core\frame.py:4102, in DataFrame.__getitem__(
    self=            geopolitical_tension_index  cluster
...1
2023-01-10                         0.5        1,
    key='date'
)
   4100 if self.columns.nlevels > 1:
   4101     return self._getitem_multilevel(key)
-> 4102 indexer = self.columns.get_loc(key)
        key = 'date'
        self =             geopolitical_tension_index  cluster
date                                           
2023-01-01                         1.2        1
2023-01-02                         3.4        0
2023-01-03                         2.1        0
2023-01-04                         4.2        0
2023-01-05                         5.6        2
2023-01-06                         4.4        0
2023-01-07                         3.3        0
2023-01-08                         2.2        0
2023-01-09                         1.1        1
2023-01-10                         0.5        1
   4103 if is_integer(indexer):
   4104     indexer = [indexer]

File D:\Anaconda\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(
    self=Index(['geopolitical_tension_index', 'cluster'], dtype='object'),
    key='date'
)
   3807     if isinstance(casted_key, slice) or (
   3808         isinstance(casted_key, abc.Iterable)
   3809         and any(isinstance(x, slice) for x in casted_key)
   3810     ):
   3811         raise InvalidIndexError(key)
-> 3812     raise KeyError(key) from err
        key = 'date'
   3813 except TypeError:
   3814     # If we have a listlike key, _check_indexing_error will raise
   3815     #  InvalidIndexError. Otherwise we fall through and re-raise
   3816     #  the TypeError.
   3817     self._check_indexing_error(key)

KeyError: 'date'

Mapping of Military Supply Chains¶

In [3]:
# Import necessary libraries
import pandas as pd
import geopandas as gpd
import matplotlib.pyplot as plt

# Simulated supply chain data
supply_chains = pd.DataFrame({
    'location': ['Factory A', 'Port B', 'Base C'],
    'latitude': [10.8505, 15.2993, 12.9716],
    'longitude': [76.2711, 74.1240, 77.5946]
})

# Check if 'pd' column is present in the DataFrame (although it seems unnecessary)
if 'pd' not in supply_chains.columns:
    print("'pd' column not found in DataFrame. Adding the column.")
    supply_chains['pd'] = [None] * len(supply_chains)

# Display the updated DataFrame
print("Updated DataFrame:")
print(supply_chains)

# Creating a GeoDataFrame from the supply chain data
supply_gdf = gpd.GeoDataFrame(supply_chains, geometry=gpd.points_from_xy(supply_chains.longitude, supply_chains.latitude))

# Load the world shapefile from the downloaded location
world = gpd.read_file(r'E:\world.shp')  # Replace with your path


# Plotting the world map with supply chain locations
ax = world.plot(figsize=(10, 6))
supply_gdf.plot(ax=ax, color='purple')
plt.title("Mapping of Military Supply Chains")
plt.show()
'pd' column not found in DataFrame. Adding the column.
Updated DataFrame:
    location  latitude  longitude    pd
0  Factory A   10.8505    76.2711  None
1     Port B   15.2993    74.1240  None
2     Base C   12.9716    77.5946  None
No description has been provided for this image

Interactive Visualization of Global Military Strength¶

In [5]:
# Import necessary libraries
import pandas as pd
import plotly.express as px
import plotly.graph_objs as go

# Sample data
strength_data = {
    'Country': ['India', 'USA', 'Russia', 'China'],
    'Strength': [200, 300, 250, 280]
}

# Creating DataFrame
df_strength = pd.DataFrame(strength_data)

# Check if 'px' column is present in the DataFrame
if 'px' not in df_strength.columns:
    print("'px' column not found in DataFrame. Adding the column.")
    df_strength['px'] = [None] * len(df_strength)

# Display the updated DataFrame
print("Updated DataFrame:")
print(df_strength)

# Plotting bar chart using plotly.express
fig = px.bar(df_strength, x='Country', y='Strength', title="Global Military Strength")
fig.show()
'px' column not found in DataFrame. Adding the column.
Updated DataFrame:
  Country  Strength    px
0   India       200  None
1     USA       300  None
2  Russia       250  None
3   China       280  None

Sentiment Correlation with Military Movements¶

In [7]:
import pandas as pd
import numpy as np

# Assuming some sample data for df and df_sentiment
df = pd.DataFrame({
    'military_movement_index': [5.2, 6.5, 7.3, 5.5, 6.9],
    'other_column': [1, 2, 3, 4, 5]
})

df_sentiment = pd.DataFrame({
    'sentiment_score': [0.5, 0.6, 0.4, 0.7, 0.3],
    'other_column_sentiment': [9, 8, 7, 6, 5]
})

# Check if 'military_movement_index' is present in df
if 'military_movement_index' not in df.columns:
    print("'military_movement_index' column not found in df. Adding the column.")
    df['military_movement_index'] = np.nan  # or some default values

# Check if 'sentiment_score' is present in df_sentiment
if 'sentiment_score' not in df_sentiment.columns:
    print("'sentiment_score' column not found in df_sentiment. Adding the column.")
    df_sentiment['sentiment_score'] = np.nan  # or some default values

# Calculate correlation between sentiment_score and military_movement_index
sentiment_correlation = df_sentiment['sentiment_score'].corr(df['military_movement_index'])
print("Sentiment correlation with military movements:", sentiment_correlation)

# Display the updated DataFrames
print("\nUpdated df:")
print(df)

print("\nUpdated df_sentiment:")
print(df_sentiment)
Sentiment correlation with military movements: -0.6316761657092369

Updated df:
   military_movement_index  other_column
0                      5.2             1
1                      6.5             2
2                      7.3             3
3                      5.5             4
4                      6.9             5

Updated df_sentiment:
   sentiment_score  other_column_sentiment
0              0.5                       9
1              0.6                       8
2              0.4                       7
3              0.7                       6
4              0.3                       5

Visualizing Strategic Military Alliances¶

In [13]:
import geopandas as gpd
import pandas as pd
import folium
from IPython.display import IFrame

# Simulated alliances with Latitudes and Longitudes
alliances = {
    'Country': ['India', 'USA', 'Britain', 'China'],
    'Ally': ['Russia', 'Taiwan', 'Ukraine', 'Pakistan'],
    'Latitude': [20.5937, 37.0902, 51.5074, 35.8617],
    'Longitude': [78.9629, -95.7129, -0.1278, 104.1954]
}

# Create a DataFrame for the alliances
df_alliances = pd.DataFrame(alliances)

# Define colors for the alliances
colors = {
    'India': 'skyblue',
    'Russia': 'skyblue',
    'USA': 'orange',
    'Taiwan': 'orange',
    'Britain': 'lightgreen',
    'Ukraine': 'lightgreen',
    'China': 'grey',
    'Pakistan': 'grey'
}

# Create a folium map centered around the world
world_map = folium.Map(location=[20, 0], zoom_start=2)

# Load the world shapefile (replace the path with your actual path)
world = gpd.read_file(r'E:\world.shp')

# Print the column names to identify the correct column for country names
print(world.columns)

# Assume the correct column name is 'NAME' (adjust this based on your data)
column_name = 'NAME'  # Replace 'NAME' with the actual column name if different

# Plot the countries and allies on the map with the specified colors
for idx, row in df_alliances.iterrows():
    country = row['Country']
    ally = row['Ally']
    
    # Get the shape of the country and the ally from the world GeoDataFrame
    country_shape = world[world[column_name] == country]
    ally_shape = world[world[column_name] == ally]

    # If the country is found in the shapefile, color it
    if not country_shape.empty:
        folium.GeoJson(
            country_shape,
            style_function=lambda x, color=colors[country]: {
                'fillColor': color,
                'color': 'black',
                'weight': 1,
                'fillOpacity': 0.6
            }
        ).add_to(world_map)

    # If the ally is found in the shapefile, color it
    if not ally_shape.empty:
        folium.GeoJson(
            ally_shape,
            style_function=lambda x, color=colors[ally]: {
                'fillColor': color,
                'color': 'black',
                'weight': 1,
                'fillOpacity': 0.6
            }
        ).add_to(world_map)

    # Mark the country's capital or city
    folium.Marker(
        location=[row['Latitude'], row['Longitude']],
        popup=f'{country}',
        icon=folium.Icon(color=colors[country], icon='info-sign')
    ).add_to(world_map)

# Save the map as an HTML file
map_path = 'Strategic_Military_Alliances_Map.html'
world_map.save(map_path)

# Display the map on the output screen
IFrame(map_path, width=800, height=600)
Index(['FIPS', 'ISO2', 'ISO3', 'UN', 'NAME', 'AREA', 'POP2005', 'REGION',
       'SUBREGION', 'LON', 'LAT', 'geometry'],
      dtype='object')
C:\Users\pradu\AppData\Local\Temp\ipykernel_12248\4026390767.py:78: UserWarning: color argument of Icon should be one of: {'lightblue', 'green', 'darkgreen', 'pink', 'purple', 'darkred', 'white', 'red', 'blue', 'gray', 'darkpurple', 'lightred', 'lightgray', 'lightgreen', 'orange', 'beige', 'black', 'cadetblue', 'darkblue'}.
  icon=folium.Icon(color=colors[country], icon='info-sign')
C:\Users\pradu\AppData\Local\Temp\ipykernel_12248\4026390767.py:78: UserWarning: color argument of Icon should be one of: {'lightblue', 'green', 'darkgreen', 'pink', 'purple', 'darkred', 'white', 'red', 'blue', 'gray', 'darkpurple', 'lightred', 'lightgray', 'lightgreen', 'orange', 'beige', 'black', 'cadetblue', 'darkblue'}.
  icon=folium.Icon(color=colors[country], icon='info-sign')
Out[13]:

Risk Assessment of Geopolitical Tensions on Defense¶

In [25]:
import geopandas as gpd
import pandas as pd

# Example GeoDataFrame creation (replace this with your actual GeoDataFrame loading code)
data = {
    'base_name': ['CountryA', 'CountryB', 'CountryC'],
    'risk_score': [0.2, 0.5, 0.7],
    'Latitude': [10, 20, 30],
    'Longitude': [50, 60, 70]
}
gdf = gpd.GeoDataFrame(data, geometry=gpd.points_from_xy(data['Longitude'], data['Latitude']))

# Function to calculate risk assessment
def risk_assessment(tension_index, proximity_score):
    return tension_index * proximity_score

# Check if 'tension_index' column is present
if 'tension_index' not in gdf.columns:
    # Add 'tension_index' column with default values, e.g., zeros
    gdf['tension_index'] = 1  # Set default value as appropriate for your use case

# Update the risk_score based on the 'tension_index' and existing 'risk_score'
gdf['risk_score'] = gdf.apply(lambda row: risk_assessment(row['tension_index'], row['risk_score']), axis=1)

# Display the updated GeoDataFrame
print("Updated GeoDataFrame:")
print(gdf[['base_name', 'tension_index', 'risk_score']])
Updated GeoDataFrame:
  base_name  tension_index  risk_score
0  CountryA              1         0.2
1  CountryB              1         0.5
2  CountryC              1         0.7

Create Data Summary Report¶

In [28]:
import pandas as pd

# Example DataFrame creation (replace with your actual data loading)
data = {
    'Status': ['Operational', 'Non-Operational', 'Operational'],
    'Geopolitical_Tension': ['High', 'Medium', 'Low']
}
df = pd.DataFrame(data)

# Check if 'Base_ID' column is present
if 'Base_ID' not in df.columns:
    # If 'Base_ID' column is missing, add it with default values (e.g., sequential IDs)
    df['Base_ID'] = range(1, len(df) + 1)  # Sequential IDs starting from 1

# Generate a summary report
summary = {
    'Total Bases': df['Base_ID'].nunique(),
    'Operational Bases': df[df['Status'] == 'Operational'].shape[0],
    'Tension Summary': df['Geopolitical_Tension'].value_counts().to_dict()
}

print("Summary Report:")
print(summary)

# Display the updated DataFrame
print("\nUpdated DataFrame:")
print(df)
Summary Report:
{'Total Bases': 3, 'Operational Bases': 2, 'Tension Summary': {'High': 1, 'Medium': 1, 'Low': 1}}

Updated DataFrame:
            Status Geopolitical_Tension  Base_ID
0      Operational                 High        1
1  Non-Operational               Medium        2
2      Operational                  Low        3

Export Summary Report to CSV¶

In [29]:
# Export summary to CSV
summary_df = pd.DataFrame(list(summary.items()), columns=['Metric', 'Value'])
summary_df.to_csv('summary_report.csv', index=False)

Visualize Military Bases on Map¶

In [31]:
import folium

# Create a Folium map object (replace with your map creation code)
mymap = folium.Map(location=[45.5236, -122.6750], zoom_start=13)  # Example coordinates

# Save the Folium map to an HTML file
mymap.save('military_bases_map.html')

print("Map has been saved to 'military_bases_map.html'.")

# Display the map in Jupyter Notebook (if applicable)
from IPython.display import display
display(mymap)
Map has been saved to 'military_bases_map.html'.
Make this Notebook Trusted to load map: File -> Trust Notebook

Create Heatmap of Tension by Base Status¶

In [33]:
import seaborn as sns

# Create Heatmap
heatmap_data = pd.pivot_table(df, values='Base_ID', index='Status', columns='Geopolitical_Tension', aggfunc='count')

plt.figure(figsize=(10, 6))
sns.heatmap(heatmap_data, annot=True, cmap='YlGnBu')
plt.title('Heatmap of Base Status and Geopolitical Tension')
plt.show()
No description has been provided for this image

Generate Real-Time Data CSV File¶

In [39]:
import pandas as pd
import numpy as np
import shutil
import os

# Generate synthetic data
real_time_data = {
    'Base_ID': range(21, 31),
    'Base_Name': [f'Real_Base_{i}' for i in range(21, 31)],
    'Latitude': np.random.uniform(low=8, high=37, size=10),
    'Longitude': np.random.uniform(low=68, high=97, size=10),
    'Status': np.random.choice(['Operational', 'Under Maintenance', 'Inactive'], size=10),
    'Geopolitical_Tension': np.random.choice(['High', 'Medium', 'Low'], size=10),
    'News_Sentiment': np.random.uniform(low=-1, high=1, size=10)
}

# Create DataFrame
real_time_df = pd.DataFrame(real_time_data)

# Save to CSV
csv_file_path = 'real_time_military_bases.csv'
real_time_df.to_csv(csv_file_path, index=False)

# Display the CSV content in the output screen
print("CSV Content:")
print(real_time_df)

# Move CSV file to Downloads folder
downloads_folder = os.path.expanduser('~/Downloads')  # Adjusted path to default Downloads folder
destination_path = os.path.join(downloads_folder, 'real_time_military_bases.csv')

# Check if the Downloads folder exists and create it if not
if not os.path.exists(downloads_folder):
    os.makedirs(downloads_folder)

# Move the file
shutil.move(csv_file_path, destination_path)

print(f"CSV file has been saved to '{destination_path}'.")

# Optional: Display confirmation message
from IPython.display import display, FileLink
display(FileLink(destination_path))

# Display the moved CSV file
try:
    # Attempt to read the CSV file from the new location
    df_from_csv = pd.read_csv(destination_path)
    display(df_from_csv)
except FileNotFoundError as e:
    print(f"Error: {e}")
CSV Content:
   Base_ID     Base_Name   Latitude  Longitude             Status  \
0       21  Real_Base_21  10.985358  85.442648           Inactive   
1       22  Real_Base_22  23.683741  79.247470        Operational   
2       23  Real_Base_23  35.432604  89.634941  Under Maintenance   
3       24  Real_Base_24  27.351297  83.592943        Operational   
4       25  Real_Base_25  20.157554  95.585460           Inactive   
5       26  Real_Base_26  21.889860  86.636505        Operational   
6       27  Real_Base_27  36.302884  72.843844           Inactive   
7       28  Real_Base_28  24.797962  80.744678  Under Maintenance   
8       29  Real_Base_29  35.764945  75.508805           Inactive   
9       30  Real_Base_30  27.445434  76.685628  Under Maintenance   

  Geopolitical_Tension  News_Sentiment  
0                 High        0.484132  
1               Medium       -0.640322  
2                 High        0.206002  
3                  Low        0.287047  
4                  Low        0.398509  
5                  Low       -0.253378  
6               Medium        0.457558  
7                 High        0.202566  
8               Medium       -0.465025  
9               Medium        0.616319  
CSV file has been saved to 'C:\Users\pradu/Downloads\real_time_military_bases.csv'.
C:\Users\pradu/Downloads\real_time_military_bases.csv
Base_ID Base_Name Latitude Longitude Status Geopolitical_Tension News_Sentiment
0 21 Real_Base_21 10.985358 85.442648 Inactive High 0.484132
1 22 Real_Base_22 23.683741 79.247470 Operational Medium -0.640322
2 23 Real_Base_23 35.432604 89.634941 Under Maintenance High 0.206002
3 24 Real_Base_24 27.351297 83.592943 Operational Low 0.287047
4 25 Real_Base_25 20.157554 95.585460 Inactive Low 0.398509
5 26 Real_Base_26 21.889860 86.636505 Operational Low -0.253378
6 27 Real_Base_27 36.302884 72.843844 Inactive Medium 0.457558
7 28 Real_Base_28 24.797962 80.744678 Under Maintenance High 0.202566
8 29 Real_Base_29 35.764945 75.508805 Inactive Medium -0.465025
9 30 Real_Base_30 27.445434 76.685628 Under Maintenance Medium 0.616319

Create Detailed Report in Jupyter Notebook¶

In [44]:
pip install nbformat nbconvert
Requirement already satisfied: nbformat in d:\anaconda\lib\site-packages (5.9.2)
Requirement already satisfied: nbconvert in d:\anaconda\lib\site-packages (7.10.0)
Requirement already satisfied: fastjsonschema in d:\anaconda\lib\site-packages (from nbformat) (2.16.2)
Requirement already satisfied: jsonschema>=2.6 in d:\anaconda\lib\site-packages (from nbformat) (4.19.2)
Requirement already satisfied: jupyter-core in d:\anaconda\lib\site-packages (from nbformat) (5.7.2)
Requirement already satisfied: traitlets>=5.1 in d:\anaconda\lib\site-packages (from nbformat) (5.14.3)
Requirement already satisfied: beautifulsoup4 in d:\anaconda\lib\site-packages (from nbconvert) (4.12.3)
Requirement already satisfied: bleach!=5.0.0 in d:\anaconda\lib\site-packages (from nbconvert) (4.1.0)
Requirement already satisfied: defusedxml in d:\anaconda\lib\site-packages (from nbconvert) (0.7.1)
Requirement already satisfied: jinja2>=3.0 in d:\anaconda\lib\site-packages (from nbconvert) (3.1.4)
Requirement already satisfied: jupyterlab-pygments in d:\anaconda\lib\site-packages (from nbconvert) (0.1.2)
Requirement already satisfied: markupsafe>=2.0 in d:\anaconda\lib\site-packages (from nbconvert) (2.1.3)
Requirement already satisfied: mistune<4,>=2.0.3 in d:\anaconda\lib\site-packages (from nbconvert) (2.0.4)
Requirement already satisfied: nbclient>=0.5.0 in d:\anaconda\lib\site-packages (from nbconvert) (0.8.0)
Requirement already satisfied: packaging in d:\anaconda\lib\site-packages (from nbconvert) (23.2)
Requirement already satisfied: pandocfilters>=1.4.1 in d:\anaconda\lib\site-packages (from nbconvert) (1.5.0)
Requirement already satisfied: pygments>=2.4.1 in d:\anaconda\lib\site-packages (from nbconvert) (2.15.1)
Requirement already satisfied: tinycss2 in d:\anaconda\lib\site-packages (from nbconvert) (1.2.1)
Requirement already satisfied: six>=1.9.0 in d:\anaconda\lib\site-packages (from bleach!=5.0.0->nbconvert) (1.16.0)
Requirement already satisfied: webencodings in d:\anaconda\lib\site-packages (from bleach!=5.0.0->nbconvert) (0.5.1)
Requirement already satisfied: attrs>=22.2.0 in d:\anaconda\lib\site-packages (from jsonschema>=2.6->nbformat) (23.1.0)
Requirement already satisfied: jsonschema-specifications>=2023.03.6 in d:\anaconda\lib\site-packages (from jsonschema>=2.6->nbformat) (2023.7.1)
Requirement already satisfied: referencing>=0.28.4 in d:\anaconda\lib\site-packages (from jsonschema>=2.6->nbformat) (0.30.2)
Requirement already satisfied: rpds-py>=0.7.1 in d:\anaconda\lib\site-packages (from jsonschema>=2.6->nbformat) (0.10.6)
Requirement already satisfied: platformdirs>=2.5 in d:\anaconda\lib\site-packages (from jupyter-core->nbformat) (3.10.0)
Requirement already satisfied: pywin32>=300 in d:\anaconda\lib\site-packages (from jupyter-core->nbformat) (305.1)
Requirement already satisfied: jupyter-client>=6.1.12 in d:\anaconda\lib\site-packages (from nbclient>=0.5.0->nbconvert) (8.6.0)
Requirement already satisfied: soupsieve>1.2 in d:\anaconda\lib\site-packages (from beautifulsoup4->nbconvert) (2.5)
Requirement already satisfied: python-dateutil>=2.8.2 in d:\anaconda\lib\site-packages (from jupyter-client>=6.1.12->nbclient>=0.5.0->nbconvert) (2.9.0.post0)
Requirement already satisfied: pyzmq>=23.0 in d:\anaconda\lib\site-packages (from jupyter-client>=6.1.12->nbclient>=0.5.0->nbconvert) (25.1.2)
Requirement already satisfied: tornado>=6.2 in d:\anaconda\lib\site-packages (from jupyter-client>=6.1.12->nbclient>=0.5.0->nbconvert) (6.4.1)
Note: you may need to restart the kernel to use updated packages.
In [1]:
import nbformat
import pandas as pd
from nbconvert import HTMLExporter, PDFExporter
from nbconvert.preprocessors import ExecutePreprocessor
import os

# Load the notebook
notebook_filename = r'C:\Users\pradu\Downloads\Defense Infrastructure and Geopolitical Tension Monitoring (3).ipynb'
with open(notebook_filename, encoding='utf-8') as f:
    nb = nbformat.read(f, as_version=4)

# Execute the notebook (if needed)
ep = ExecutePreprocessor(timeout=600, kernel_name='python3')
ep.preprocess(nb, {'metadata': {'path': './'}})

# Extract code cells and markdown cells
code_cells = []
markdown_cells = []
for cell in nb.cells:
    if cell.cell_type == 'code':
        code_cells.append(cell.source)
    elif cell.cell_type == 'markdown':
        markdown_cells.append(cell.source)

# Create a detailed report as a DataFrame
report_data = {
    'Cell Type': ['Markdown' if cell.cell_type == 'markdown' else 'Code' for cell in nb.cells],
    'Content': [cell.source for cell in nb.cells]
}
report_df = pd.DataFrame(report_data)

# Display the report DataFrame
print(report_df)
D:\Anaconda\Lib\site-packages\zmq\_future.py:693: RuntimeWarning: Proactor event loop does not implement add_reader family of methods required for zmq. Registering an additional selector thread for add_reader support via tornado. Use `asyncio.set_event_loop_policy(WindowsSelectorEventLoopPolicy())` to avoid this warning.
  self._get_loop()
    Cell Type                                            Content
0    Markdown                    # Install necessary libraries\n
1        Code  !pip install pandas numpy matplotlib seaborn s...
2    Markdown                                 # Import Libraries
3        Code                                 pip install folium
4        Code  import pandas as pd\nimport numpy as np\nimpor...
..        ...                                                ...
126      Code  import folium\n\n# Create a Folium map object ...
127  Markdown         # Create Heatmap of Tension by Base Status
128      Code  import seaborn as sns\n\n# Create Heatmap\nhea...
129  Markdown                 # Generate Real-Time Data CSV File
130      Code                                                   

[131 rows x 2 columns]
In [2]:
# Save the report as a CSV file
csv_filename = 'E:/Detailed_Report.csv'
report_df.to_csv(csv_filename, index=False)
print(f"Report saved as CSV to {csv_filename}")
Report saved as CSV to E:/Detailed_Report.csv
In [3]:
pip install pdfkit wkhtmltopdf asyncio weasyprint
Requirement already satisfied: pdfkit in d:\anaconda\lib\site-packages (1.0.0)
Requirement already satisfied: wkhtmltopdf in d:\anaconda\lib\site-packages (0.2)
Requirement already satisfied: asyncio in d:\anaconda\lib\site-packages (3.4.3)
Collecting weasyprint
  Downloading weasyprint-62.3-py3-none-any.whl.metadata (3.7 kB)
Collecting pydyf>=0.10.0 (from weasyprint)
  Downloading pydyf-0.11.0-py3-none-any.whl.metadata (2.5 kB)
Requirement already satisfied: cffi>=0.6 in d:\anaconda\lib\site-packages (from weasyprint) (1.16.0)
Collecting html5lib>=1.1 (from weasyprint)
  Downloading html5lib-1.1-py2.py3-none-any.whl.metadata (16 kB)
Collecting tinycss2>=1.3.0 (from weasyprint)
  Downloading tinycss2-1.3.0-py3-none-any.whl.metadata (3.0 kB)
Collecting cssselect2>=0.1 (from weasyprint)
  Downloading cssselect2-0.7.0-py3-none-any.whl.metadata (2.9 kB)
Collecting Pyphen>=0.9.1 (from weasyprint)
  Downloading pyphen-0.16.0-py3-none-any.whl.metadata (3.2 kB)
Requirement already satisfied: Pillow>=9.1.0 in d:\anaconda\lib\site-packages (from weasyprint) (10.3.0)
Requirement already satisfied: fonttools>=4.0.0 in d:\anaconda\lib\site-packages (from fonttools[woff]>=4.0.0->weasyprint) (4.51.0)
Requirement already satisfied: pycparser in d:\anaconda\lib\site-packages (from cffi>=0.6->weasyprint) (2.21)
Requirement already satisfied: webencodings in d:\anaconda\lib\site-packages (from cssselect2>=0.1->weasyprint) (0.5.1)
Collecting zopfli>=0.1.4 (from fonttools[woff]>=4.0.0->weasyprint)
  Downloading zopfli-0.2.3-cp312-cp312-win_amd64.whl.metadata (3.0 kB)
Requirement already satisfied: brotli>=1.0.1 in d:\anaconda\lib\site-packages (from fonttools[woff]>=4.0.0->weasyprint) (1.0.9)
Requirement already satisfied: six>=1.9 in d:\anaconda\lib\site-packages (from html5lib>=1.1->weasyprint) (1.16.0)
Downloading weasyprint-62.3-py3-none-any.whl (289 kB)
   ---------------------------------------- 0.0/289.3 kB ? eta -:--:--
   - -------------------------------------- 10.2/289.3 kB ? eta -:--:--
   ----------- --------------------------- 81.9/289.3 kB 762.6 kB/s eta 0:00:01
   -------------- ----------------------- 112.6/289.3 kB 819.2 kB/s eta 0:00:01
   --------------------- ---------------- 163.8/289.3 kB 817.0 kB/s eta 0:00:01
   ---------------------------------------  286.7/289.3 kB 1.3 MB/s eta 0:00:01
   ---------------------------------------- 289.3/289.3 kB 1.2 MB/s eta 0:00:00
Downloading cssselect2-0.7.0-py3-none-any.whl (15 kB)
Downloading html5lib-1.1-py2.py3-none-any.whl (112 kB)
   ---------------------------------------- 0.0/112.2 kB ? eta -:--:--
   ---------------------------------------- 112.2/112.2 kB 6.4 MB/s eta 0:00:00
Downloading pydyf-0.11.0-py3-none-any.whl (8.1 kB)
Downloading pyphen-0.16.0-py3-none-any.whl (2.1 MB)
   ---------------------------------------- 0.0/2.1 MB ? eta -:--:--
   ---- ----------------------------------- 0.2/2.1 MB 14.1 MB/s eta 0:00:01
   ---------- ----------------------------- 0.5/2.1 MB 6.7 MB/s eta 0:00:01
   ----------------- ---------------------- 0.9/2.1 MB 6.4 MB/s eta 0:00:01
   ------------------------------ --------- 1.6/2.1 MB 8.3 MB/s eta 0:00:01
   ---------------------------------------  2.1/2.1 MB 9.4 MB/s eta 0:00:01
   ---------------------------------------- 2.1/2.1 MB 7.8 MB/s eta 0:00:00
Downloading tinycss2-1.3.0-py3-none-any.whl (22 kB)
Downloading zopfli-0.2.3-cp312-cp312-win_amd64.whl (97 kB)
   ---------------------------------------- 0.0/97.8 kB ? eta -:--:--
   ---------------------------------------- 97.8/97.8 kB 5.5 MB/s eta 0:00:00
Installing collected packages: zopfli, tinycss2, Pyphen, pydyf, html5lib, cssselect2, weasyprint
  Attempting uninstall: tinycss2
    Found existing installation: tinycss2 1.2.1
    Uninstalling tinycss2-1.2.1:
      Successfully uninstalled tinycss2-1.2.1
Successfully installed Pyphen-0.16.0 cssselect2-0.7.0 html5lib-1.1 pydyf-0.11.0 tinycss2-1.3.0 weasyprint-62.3 zopfli-0.2.3
Note: you may need to restart the kernel to use updated packages.
In [4]:
import asyncio
import nbformat
import pandas as pd
from nbconvert import HTMLExporter, PDFExporter
from nbconvert.preprocessors import ExecutePreprocessor
import os

# Workaround for the Proactor event loop warning
if os.name == 'nt':  # Check if the operating system is Windows
    asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())

# Load the notebook
notebook_filename = r'C:\Users\pradu\Downloads\Defense Infrastructure and Geopolitical Tension Monitoring (3).ipynb'
with open(notebook_filename, encoding='utf-8') as f:
    nb = nbformat.read(f, as_version=4)

# Execute the notebook (if needed)
ep = ExecutePreprocessor(timeout=600, kernel_name='python3')
ep.preprocess(nb, {'metadata': {'path': './'}})

# Extract code cells and markdown cells
code_cells = []
markdown_cells = []
for cell in nb.cells:
    if cell.cell_type == 'code':
        code_cells.append(cell.source)
    elif cell.cell_type == 'markdown':
        markdown_cells.append(cell.source)

# Create a detailed report as a DataFrame
report_data = {
    'Cell Type': ['Markdown' if cell.cell_type == 'markdown' else 'Code' for cell in nb.cells],
    'Content': [cell.source for cell in nb.cells]
}
report_df = pd.DataFrame(report_data)

# Display the report DataFrame
print(report_df)

# Convert the notebook to HTML
html_exporter = HTMLExporter()
html_exporter.template_name = 'classic'
(body, resources) = html_exporter.from_notebook_node(nb)

# Save the HTML to a file
html_filename = r'E:/Defence_Infrastructure_and_Geopolitical_Tension_Monitoring_Detailed_Report.html'
with open(html_filename, 'w', encoding='utf-8') as f:
    f.write(body)

# Convert the HTML file to PDF using WeasyPrint
from weasyprint import HTML

pdf_filename = r'E:/Defence_Infrastructure_and_Geopolitical_Tension_Monitoring_Detailed_Report.pdf'
HTML(html_filename).write_pdf(pdf_filename)

print(f"Report downloaded as PDF to {pdf_filename}")
    Cell Type                                            Content
0    Markdown                    # Install necessary libraries\n
1        Code  !pip install pandas numpy matplotlib seaborn s...
2    Markdown                                 # Import Libraries
3        Code                                 pip install folium
4        Code  import pandas as pd\nimport numpy as np\nimpor...
..        ...                                                ...
126      Code  import folium\n\n# Create a Folium map object ...
127  Markdown         # Create Heatmap of Tension by Base Status
128      Code  import seaborn as sns\n\n# Create Heatmap\nhea...
129  Markdown                 # Generate Real-Time Data CSV File
130      Code                                                   

[131 rows x 2 columns]

-----

WeasyPrint could not import some external libraries. Please carefully follow the installation steps before reporting an issue:
https://doc.courtbouillon.org/weasyprint/stable/first_steps.html#installation
https://doc.courtbouillon.org/weasyprint/stable/first_steps.html#troubleshooting 

-----

---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
Cell In[4], line 51
     48     f.write(body)
     50 # Convert the HTML file to PDF using WeasyPrint
---> 51 from weasyprint import HTML
     53 pdf_filename = r'E:/Defence_Infrastructure_and_Geopolitical_Tension_Monitoring_Detailed_Report.pdf'
     54 HTML(html_filename).write_pdf(pdf_filename)

File D:\Anaconda\Lib\site-packages\weasyprint\__init__.py:419
    416         yield 'string', string, base_url, None
    418 # Work around circular imports.
--> 419 from .css import preprocess_stylesheet  # noqa: I001, E402
    420 from .html import (  # noqa: E402
    421     HTML5_UA_COUNTER_STYLE, HTML5_UA_STYLESHEET, HTML5_UA_FORM_STYLESHEET,
    422     HTML5_PH_STYLESHEET)
    423 from .document import Document, Page

File D:\Anaconda\Lib\site-packages\weasyprint\css\__init__.py:28
     26 from ..urls import URLFetchingError, get_url_attribute, url_join
     27 from . import counters, media_queries
---> 28 from .computed_values import COMPUTER_FUNCTIONS
     29 from .properties import INHERITED, INITIAL_NOT_COMPUTED, INITIAL_VALUES, ZERO_PIXELS
     30 from .validation import preprocess_declarations

File D:\Anaconda\Lib\site-packages\weasyprint\css\computed_values.py:9
      6 from tinycss2.color3 import parse_color
      8 from ..logger import LOGGER
----> 9 from ..text.ffi import ffi, pango, units_to_double
     10 from ..text.line_break import Layout, first_line_metrics
     11 from ..urls import get_link_attribute

File D:\Anaconda\Lib\site-packages\weasyprint\text\ffi.py:431
    428         with suppress((OSError, FileNotFoundError)):
    429             os.add_dll_directory(dll_directory)
--> 431 gobject = _dlopen(
    432     ffi, 'gobject-2.0-0', 'gobject-2.0', 'libgobject-2.0-0',
    433     'libgobject-2.0.so.0', 'libgobject-2.0.dylib', 'libgobject-2.0-0.dll')
    434 pango = _dlopen(
    435     ffi, 'pango-1.0-0', 'pango-1.0', 'libpango-1.0-0', 'libpango-1.0.so.0',
    436     'libpango-1.0.dylib', 'libpango-1.0-0.dll')
    437 harfbuzz = _dlopen(
    438     ffi, 'harfbuzz', 'harfbuzz-0.0', 'libharfbuzz-0',
    439     'libharfbuzz.so.0', 'libharfbuzz.so.0', 'libharfbuzz.0.dylib',
    440     'libharfbuzz-0.dll')

File D:\Anaconda\Lib\site-packages\weasyprint\text\ffi.py:420, in _dlopen(ffi, *names)
    410 # Re-raise the exception.
    411 print(
    412     '\n-----\n\n'
    413     'WeasyPrint could not import some external libraries. Please '
   (...)
    418     'first_steps.html#troubleshooting',
    419     '\n\n-----\n')  # pragma: no cover
--> 420 return ffi.dlopen(names[0])

File D:\Anaconda\Lib\site-packages\cffi\api.py:150, in FFI.dlopen(self, name, flags)
    147     raise TypeError("dlopen(name): name must be a file name, None, "
    148                     "or an already-opened 'void *' handle")
    149 with self._lock:
--> 150     lib, function_cache = _make_ffi_library(self, name, flags)
    151     self._function_caches.append(function_cache)
    152     self._libraries.append(lib)

File D:\Anaconda\Lib\site-packages\cffi\api.py:832, in _make_ffi_library(ffi, libname, flags)
    830 def _make_ffi_library(ffi, libname, flags):
    831     backend = ffi._backend
--> 832     backendlib = _load_backend_lib(backend, libname, flags)
    833     #
    834     def accessor_function(name):

File D:\Anaconda\Lib\site-packages\cffi\api.py:827, in _load_backend_lib(backend, name, flags)
    825     if first_error is not None:
    826         msg = "%s.  Additionally, %s" % (first_error, msg)
--> 827     raise OSError(msg)
    828 return backend.load_library(path, flags)

OSError: cannot load library 'gobject-2.0-0': error 0x7e.  Additionally, ctypes.util.find_library() did not manage to locate a library called 'gobject-2.0-0'
In [ ]: